我在updatepanel中有一个gridview,行有一个删除按钮,删除该行。
在其他地方,我运行代码来插入一行。在此插入之后,我使用updatepanel的ID运行__doPostback(),然后在updatepanel的load()事件中,我在gridview上调用databind()。
一旦我实现了__doPostback()和数据绑定,内置的gridview delete就会停止工作! :(添加行时的实际刷新/数据绑定效果很好。
我怎样才能克服这一点?我想有点可能是因为当点击删除按钮时,数据绑定与内置删除/刷新功能相冲突?
谢谢!
编辑:如果问题描述得不好,请道歉......
基本上,我希望通过updatepanel内部的数据源和命令列等获得具有内置删除功能的gridview。我也想单独更新这个面板,但是当我在updatepanel.load中添加这个单独的更新代码(gridview.databind)时,它会破坏标准的删除功能。希望很清楚:)
答案 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()
希望这能解决问题。