Asp.net updatepanel中的gridview delete命令和单独的_doPostback()功能

Asp.net updatepanel中的gridview delete命令和单独的_doPostback()功能,asp.net,gridview,asp.net-ajax,updatepanel,Asp.net,Gridview,Asp.net Ajax,Updatepanel,我在updatepanel中有一个gridview,行中有一个删除按钮,删除该行 在其他地方,我运行代码插入一行。在这次插入之后,我使用updatepanel的ID运行_doPostback(),然后在updatepanel的load()事件中调用gridview上的databind() 一旦我实现了_doPostback()和数据绑定,内置的gridview delete就会停止工作!:(添加行时的实际刷新/数据绑定效果良好 我想当点击删除按钮时,数据绑定与inbuild删除/刷新功能冲突,这

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

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

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

我想当点击删除按钮时,数据绑定与inbuild删除/刷新功能冲突,这可能是错误的

谢谢

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


本质上,我希望在updatepanel中通过datasource和command列等拥有一个内置删除功能的gridview。我也希望单独更新此面板,但当我输入此单独的更新代码(updatepanel.load中的gridview.databind)时它破坏了标准的删除功能。希望这一点很清楚:)

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

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

我认为问题在于事件位于GridView内部,您无法像使用按钮那样轻松访问它们。要注册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>
我已经有一段时间没有这样做了,但我相信这将允许GridView按照您的预期运行,除非您不需要额外的DataBind(),我不相信在这种情况下

您还可以按照Jeison的建议,将UpdatePanel设置为Conditional并在此基础上启动UpdatePanel1.Update()

您可以在以下位置找到一些附加的详细信息:


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

我认为问题在于事件在GridView中,您无法像使用按钮一样轻松访问它们。要注册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>
我已经有一段时间没有这样做了,但我相信这将允许GridView按照您的预期运行,除非您不需要额外的DataBind(),我不相信在这种情况下

您还可以按照Jeison的建议,将UpdatePanel设置为Conditional并在此基础上启动UpdatePanel1.Update()

您可以在以下位置找到一些附加的详细信息:


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

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

编辑

如果是这样,您可以在uu doPostBack(updatePanelId,“true”)中添加布尔eventArgument。使用它,您可以在updatepanel加载事件中添加一个条件,如

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

希望这能解决问题。

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

编辑

如果是这样,您可以在uu doPostBack(updatePanelId,“true”)中添加布尔eventArgument。使用它,您可以在updatepanel加载事件中添加一个条件,如

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

希望这能解决问题。

您能发布运行的代码以插入行吗?该代码是否会在单击“删除”按钮后立即运行?我不太清楚这两个事件是如何关联的。insert是USING块中的一个简单sqlCommand,后面是ClientScript.RegisterStartupScript,它运行uu doPostback,并使用包含主gridview作为参数的updatepanel。此代码与deletebutton无关,deletebutton是通过sqldatasource和deletecommand等“内置”到gridview的。进一步的注释-忽略用于插入记录的外部代码,我使用的唯一可能干扰gridview删除的代码是updatepanel的load()例程。在这里我做了一个gridview.databind()。刚刚注意到我得到了以下错误:“sys.webforms.pagerequestmanagerservererrorexception:无效的回发或回调参数”-这有助于阐明问题吗?您是否发布了运行以插入行的代码?该代码是否会在单击“删除”按钮后立即运行?我不太清楚这两个事件是如何关联的。insert是USING块中的一个简单sqlCommand,后面是ClientScript.RegisterStartupScript,它运行uu doPostback,并使用包含主gridview作为参数的updatepanel。此代码与deletebutton无关,deletebutton是通过sqldatasource和deletecommand等“内置”到gridview的。进一步的注释-忽略用于插入记录的外部代码,我使用的唯一可能干扰gridview删除的代码是updatepanel的load()例程。在这里我做了一个gridview.databind()。刚刚注意到我得到了以下错误:“sys.webforms.pagerequestmanagerservererrorexception:无效的回发或回调参数”-这有助于阐明问题吗?cheersHi,无视clientscript方法(这是因为我从不同的aspx页面执行更新),似乎当我将GridView包装在UpdatePanel中,并在该更新中调用DataBind时,它立即中断了删除乐趣