无法找到AsyncPostBackTrigger的ControlID

时间:2011-05-05 08:01:54

标签: c# asp.net gridview updatepanel

  <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'。

4 个答案:

答案 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"/>

应该工作