<asp:UpdatePanel ID="CartUpdatePanel" runat="server">
<Triggers>
<asp:AsyncPostBackTrigger ControlID='<%= rdoSelect.ClientID %>'/>
</Triggers>
<ContentTemplate>
<asp:Timer ID="cartTimer" Interval="5000" runat="server" OnTick="cartTimer_Tick">
</asp:Timer>
<asp:GridView ID="gridCartSearch" runat="server" AutoGenerateColumns="False">
<Columns>
<asp:TemplateField HeaderText="Select">
<ItemTemplate>
<asp:HiddenField ID="Serial" runat="server" Value='<%# Eval("serialnum") %>' />
<asp:RadioButton ID="rdoSelect" runat="server" AutoPostBack="true" GroupName="radioBtns"
OnCheckedChanged="rdoSelect_CheckedChanged" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
</ContentTemplate>
</asp:UpdatePanel>
我收到以下错误
ID为'&lt;%=的控件 rdoSelect.ClientID%&gt;'不可能 在UpdatePanel中找到触发器 'CartUpdatePanel'。
答案 0 :(得分:4)
更改以下行:
<asp:AsyncPostBackTrigger ControlID='<%= rdoSelect.ClientID %>'/>
为:
<asp:AsyncPostBackTrigger ControlID='rdoSelect'/>
您不能在服务器控件(如AsyncPostBackTrigger)中使用服务器端标记。相反,你应该使用控件的ID,asp.net运行时将动态地用适当的客户端id替换它。
答案 1 :(得分:2)
我尝试了<asp:AsyncPostBackTrigger ControlID='rdoSelect'/>
,但它无效。
我在这里找到了一个解决方案A control with ID 'ImageButton5' could not be found for。
只要创建了一行,就应该注册AsyncPostBack。
protected void gridCartSearch_RowCreated(object sender, GridViewRowEventArgs e)
{
Control radioControl = e.Row.Cells[0].FindControl("rdoSelect");
if (radioControl != null)
{
cartScriptMgr.RegisterAsyncPostBackControl(radioControl);
}
}
在rdoSelect_CheckedChanged
上更新更新面板 protected void rdoSelect_CheckedChanged(object sender, EventArgs e)
{
....
CartUpdatePanel.Update();
}
使用<asp:AsyncPostBackTrigger ControlID='rdoSelect'/>
全部谢谢
答案 2 :(得分:1)
您不应该拥有客户端ID。只需将rdoSelect
作为ID。您还应将标记EventName
设为CheckedChanged
答案 3 :(得分:1)
ControlID是aspx标记中定义的asp.net控件ID,而不是客户端ID,更改如下:
<asp:AsyncPostBackTrigger ControlID="rdoSelect"/>
应该工作