updatepanel中的gridview delete命令,以及单独的__doPostback()功能

时间:2010-12-03 15:41:52

标签: asp.net gridview asp.net-ajax updatepanel

我在updatepanel中有一个gridview,行有一个删除按钮,删除该行。

在其他地方,我运行代码来插入一行。在此插入之后,我使用updatepanel的ID运行__doPostback(),然后在updatepanel的load()事件中,我在gridview上调用databind()。

一旦我实现了__doPostback()和数据绑定,内置的gridview delete就会停止工作! :(添加行时的实际刷新/数据绑定效果很好。

我怎样才能克服这一点?我想有点可能是因为当点击删除按钮时,数据绑定与内置删除/刷新功能相冲突?

谢谢!

编辑:如果问题描述得不好,请道歉......

基本上,我希望通过updatepanel内部的数据源和命令列等获得具有内置删除功能的gridview。我也想单独更新这个面板,但是当我在updatepanel.load中添加这个单独的更新代码(gridview.databind)时,它会破坏标准的删除功能。希望很清楚:)

3 个答案:

答案 0 :(得分:0)

您是否已尝试将UpdatePanelMode作为条件并在插入块期间使用除ClientScript.RegisterStartupScript之外的UpdatePanel.Update()?

答案 1 :(得分:0)

我认为问题在于事件在GridView内部,您无法像使用Button之类的东西那样轻松地访问它们。要注册GridView以生成异步事件,您需要将其附加到ScriptManager。

要执行此操作,请使用RegisterAsyncpostBackControl方法。

以下是如何操作的一般概念。

<asp:ScriptManager ID="ScriptManager1" runat="server" />
<asp:UpdatePanel ID="UpdatePanel1" UpdateMode="Conditional" runat="server">
  <ContentTemplate>
    <asp:GridView ID="GridView1" runat="server">
      <%-- your fields, etc --%>
    </asp:GridView>
  </ContentTemplate>
</asp:UpdatePanel>

在你背后的代码中

protected void Page_Load()
{
    ScriptManager1.RegisterAsyncPostBackControl(GridView1);
}

我已经有一段时间了,但我相信这将允许GridView按照您的预期运行,除非您不需要额外的DataBind()我不相信这种情况。 / p>

您还可以将UpdatePanel设置为Conditional,并在Jeison建议的基础上触发UpdatePanel1.Update()。

您可以在http://msdn.microsoft.com/en-us/library/bb386452.aspx

找到一些额外的详细信息

如果您仍有问题,请告诉我们发生了什么。

答案 2 :(得分:0)

每次在插入按钮单击后加载DataBind()时,您似乎都在调用GridView的UpdatePanel,它会在删除到达DataSource之前重新加载数据。

修改

如果是这样,您可以在__doPostBack中添加boolean eventArgument(updatePanelId,“true”)。使用此功能,您可以在updatepanel加载事件中添加条件,如

if(this.updatepanel1.Page.Request.Params["__EVENTARGUMENT"] == "true"]
   this.gridview.databind()

希望这能解决问题。