visual Studio не видит выпадающий список для триггера

#asp.net

#asp.net

Вопрос:

У меня есть VB.NET / ASP.NET веб-приложение. Я добавил выпадающий список в FooterTemplate в Gridview. И я использовал ajax для обратной передачи. Но когда я добавляю выпадающий список к триггерам, vs выдает мне эту ошибку :

Не удалось найти элемент управления с идентификатором ‘DropDownList2’ для триггера в UpdatePanel ‘UpdatePanel1’.

ASP.NET код — это что-то вроде этого :

                    <asp:UpdatePanel ID="UpdatePanel1" runat="server">
                            <ContentTemplate>
                                <asp:GridView ID="GridView2" runat="server" Width="329px" AutoGenerateColumns="False"
                                    Font-Names="Arial" Font-Size="11pt" 
                                    AlternatingRowStyle-BackColor="#C2D69B" HeaderStyle-BackColor="green"
                                    AllowPaging="True" ShowFooter="True" OnPageIndexChanging="OnPaging" 

                                    Style="margin-right: 0px" BackColor="White" BorderColor="#336666" 
                                    BorderStyle="Double" BorderWidth="3px" CellPadding="3" 
                                    GridLines="Horizontal">
                                    <AlternatingRowStyle BackColor="#C2D69B" />
                                    <Columns>
                                        <asp:TemplateField>
                                            <ItemTemplate>
                                                <asp:Button ID="lnkRemove" runat="server" CommandArgument='<%# Eval("il_ad")%>'
                                                    OnClientClick="return confirm('Samp;#304;LMEK amp;#304;STEDamp;#304;amp;#286;amp;#304;Namp;#304;ZDEN EMamp;#304;N Mamp;#304;Samp;#304;Namp;#304;Z?')"
                                                    Text="Samp;#304;L" OnClick="DeleteDURUM"></asp:Button>
                                            </ItemTemplate>
                                            <FooterTemplate>
                                                <asp:Button ID="btnAdd" runat="server" Text="EKLE" OnClick="AddNewDURUM" />
                                            </FooterTemplate>
                                        </asp:TemplateField>

                                        <asp:CommandField EditText="DEamp;#286;amp;#304;amp;#350;Tamp;#304;R" ButtonType="Button"
                                            CancelText="amp;#304;PTAL" DeleteText="Samp;#304;L" UpdateText="KAYDET" ControlStyle-Width="70PX"
                                            CausesValidation="False">
                                            <ControlStyle Width="70px" />
                                        </asp:CommandField>
                                        <asp:TemplateField ItemStyle-Width="30px" HeaderText="YTM No">
                                            <ItemTemplate>
                                                <asp:Label ID="lblytm_id" runat="server" Text='<%# Eval("ytm_id")%>'></asp:Label>
                                            </ItemTemplate>
                                            <ItemStyle Width="30px"></ItemStyle>
                                        </asp:TemplateField>
                                        <asp:TemplateField HeaderText="amp;#304;l">
                                            <ItemTemplate>
                                                <asp:Label ID="il_ad" runat="server" Text='<%# Eval("il_ad")%>'></asp:Label>
                                            </ItemTemplate>
                                            <EditItemTemplate>
                                                <asp:TextBox ID="il_ad" runat="server" Text='<%# Eval("il_ad")%>'></asp:TextBox>
                                            </EditItemTemplate>




<!-- Dropdownlist is here : -->
                                            <FooterTemplate>
                                                <asp:DropDownList ID="DropDownList2" runat="server" Width= "120px" DataSourceID="iller_yukle" AutoPostBack="True">
                                                </asp:DropDownList>
                                                  </FooterTemplate>

                                        </asp:TemplateField>
                                    </Columns>
                                    <FooterStyle BackColor="White" ForeColor="#333333" />
                                    <HeaderStyle BackColor="#336666" Font-Bold="True" ForeColor="White" />
                                    <PagerStyle BackColor="#336666" ForeColor="#000066" HorizontalAlign="Left" />
                                    <RowStyle BackColor="White" ForeColor="#000066" />
                                    <SelectedRowStyle BackColor="#339966" Font-Bold="True" ForeColor="White" />
                                    <SortedAscendingCellStyle BackColor="#F7F7F7" />
                                    <SortedAscendingHeaderStyle BackColor="#487575" />
                                    <SortedDescendingCellStyle BackColor="#E5E5E5" />
                                    <SortedDescendingHeaderStyle BackColor="#275353" />
                                </asp:GridView>

                                </div>
                            </ContentTemplate>



                            <Triggers>
                                <asp:AsyncPostBackTrigger ControlID="GridView2" />
                            <asp:AsyncPostBackTrigger ControlID="DropDownList2" /> <!-- Error is here -->

                            </Triggers>
                        </asp:UpdatePanel>
  

в чем ошибка, я не мог понять, спасибо..

Ответ №1:

Существует DropDownList только внутри GridView , и вы не можете напрямую обращаться к элементам управления внутри GridView .

Вам нужно будет динамически добавлять триггер в UpdatePanel после того, как вы привязали GridView.

Чтобы динамически добавить его, вам нужно сначала привязать свой gridview, а затем зарегистрировать триггер

 AsyncPostBackTrigger apt = new AsyncPostBackTrigger();
apt.ControlID = ((Button)this.GridView1.FooterRow.FindControl("btnTrigger")).UniqueID;
apt.EventName = "Click";
this.UpdatePanel1.Triggers.Add(apt);
  

В этом примере я использую button's событие click для запуска UpdatePanel . Вы можете адаптировать это к DropDownList

Ответ №2:

Как правило, ошибка заключается в том, что вам не нужно указывать триггеры для элементов управления внутри UpdatePanel, пока вы не установите ChildrenAsTriggers="false" их на этой UpdatePanel

Комментарии:

1. @Curt, согласен, но это дает простой обходной путь для этой конкретной ситуации, не вдаваясь в объяснение именования контейнеров.