visual studio没有看到触发器的下拉列表

时间:2011-10-14 07:48:19

标签: asp.net

我有一个VB.NET / ASP.NET Web应用程序。我在Gridview的FooterTemplate中添加了一个下拉列表。我使用ajax进行回发。但是当我将下拉列表添加到触发器时,vs会给出错误:

  

在UpdatePanel'UpdatePanel1'中找不到ID为“DropDownList2”的控件。

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('S&#304;LMEK &#304;STED&#304;&#286;&#304;N&#304;ZDEN EM&#304;N M&#304;S&#304;N&#304;Z?')"
                                                    Text="S&#304;L" OnClick="DeleteDURUM"></asp:Button>
                                            </ItemTemplate>
                                            <FooterTemplate>
                                                <asp:Button ID="btnAdd" runat="server" Text="EKLE" OnClick="AddNewDURUM" />
                                            </FooterTemplate>
                                        </asp:TemplateField>

                                        <asp:CommandField EditText="DE&#286;&#304;&#350;T&#304;R" ButtonType="Button"
                                            CancelText="&#304;PTAL" DeleteText="S&#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="&#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>

错误在哪里,我无法理解,谢谢..

2 个答案:

答案 0 :(得分:2)

DropDownList仅存在于GridView中,您无法直接访问GridView内的控件。

绑定GridView后,您需要动态地将触发器添加到UpdatePanel

要动态添加它,您需要先绑定gridview,然后注册触发器

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

在此示例中,我使用button's点击事件来触发UpdatePanel。您可以将其调整为DropDownList

答案 1 :(得分:0)

一般来说,错误是你不需要为UpdatePanel中的控件指定触发器,直到你没有在UpdatePanel上设置ChildrenAsTriggers="false"