Не удалось найти ControlID для AsyncPostBackTrigger.

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

Я получаю следующую ошибку

Не удалось найти элемент управления с идентификатором '‹%= rdoSelect.ClientID %>' для триггера в UpdatePanel 'CartUpdatePanel'.


person sooraj.e    schedule 05.05.2011    source источник


Ответы (4)


Измените следующую строку:

<asp:AsyncPostBackTrigger ControlID='<%= rdoSelect.ClientID %>'/>

to:

<asp:AsyncPostBackTrigger ControlID='rdoSelect'/>

Вы не можете использовать серверные теги внутри серверного элемента управления (например, AsyncPostBackTrigger). Вместо этого вы должны использовать идентификатор элемента управления, и среда выполнения asp.net динамически заменит его правильным идентификатором на стороне клиента.

person anthares    schedule 05.05.2011
comment
Я пробовал это, это не работает. Однако я получил решение, скоро обновлю его. Спасибо. - person sooraj.e; 05.05.2011

Я пробовал <asp:AsyncPostBackTrigger ControlID='rdoSelect'/>, но это не работает.

Я нашел решение здесь Не удалось найти элемент управления с идентификатором 'ImageButton5' для.

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

Спасибо всем

person sooraj.e    schedule 06.05.2011

У вас не должно быть идентификатора клиента. Просто введите rdoSelect в качестве идентификатора. Вы также должны поставить тег EventName, чтобы быть CheckedChanged

person Oskar Kjellin    schedule 05.05.2011

ControlID — это идентификатор элемента управления asp.net, определенный в разметке aspx, а не идентификатор клиента. Измените его следующим образом:

<asp:AsyncPostBackTrigger ControlID="rdoSelect"/>

Должно сработать

person TBohnen.jnr    schedule 05.05.2011