ASP.NET:
<asp:UpdatePanel runat="server" ID="up" UpdateMode="Conditional" ChildrenAsTriggers="true">
<ContentTemplate>
<asp:GridView runat="server" ID="gv"
ClientIDMode="Static"
AllowPaging="true"
AutoGenerateColumns="false"
ShowHeaderWhenEmpty="true"
OnRowCommand="gv_RowCommand">
<Columns>
<asp:TemplateField HeaderText="">
<ItemTemplate>
<asp:ImageButton ImageUrl="~/eg.png" CommandName="er" ID="ero" runat="server" />
<asp:ImageButton ImageUrl="~/de.png" runat="server" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
<asp:Panel ID="pop" runat="server" ClientIDMode="Static">
</asp:Panel>
</ContentTemplate>
</asp:UpdatePanel>
C#:
protected void gv_RowCommand(object sender, GridViewCommandEventArgs e)
{
if (e.CommandName == "er")
{
pop.CssClass += " set100";
up.Update();
}
}
以上内容对我不起作用。所以我在UpdatePanel中添加了以下内容:
//...
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="ero" />
</Triggers>
//...
现在我得到以下错误:
Server Error in '/' Application.
A control with ID 'ero' could not be found for the trigger in UpdatePanel 'up'.
我不确定我做错了什么。
我该如何解决这个问题?
遵循此解决方案:
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
}
foreach (var item in gv.Rows)
{
ImageButton btn = (ImageButton) ((GridViewRow)item).FindControl("ero");
// Get current ScriptManager on the page
ScriptManager.GetCurrent(this.Page).RegisterPostBackControl(btn);
}
}