Asp.net 尝试保留updatepanel值时出错

Asp.net 尝试保留updatepanel值时出错,asp.net,vb.net,gridview,Asp.net,Vb.net,Gridview,我的gridview中有几个下拉框在回发时丢失了它们的值 所有内容都在更新面板中,因此我尝试将其包含到代码中,但这只是引发了一个异常。请参阅下面的代码,我在一个较大的gridview中有一个子gridview: 我在加载gridview时收到以下异常:在UpdatePanel“UpdateGV”中找不到ID为“DropDownNote”的触发器控件 我遵循了这篇文章的内容: 但是现在我得到了上面的例外,我在这里遗漏了什么?解决此问题是否会保留回发后下拉列表的值 <asp:ScriptMan

我的gridview中有几个下拉框在回发时丢失了它们的值

所有内容都在更新面板中,因此我尝试将其包含到代码中,但这只是引发了一个异常。请参阅下面的代码,我在一个较大的gridview中有一个子gridview:

我在加载gridview时收到以下异常:在UpdatePanel“UpdateGV”中找不到ID为“DropDownNote”的触发器控件

我遵循了这篇文章的内容:

但是现在我得到了上面的例外,我在这里遗漏了什么?解决此问题是否会保留回发后下拉列表的值

<asp:ScriptManager ID="ScriptManager1" runat="server" EnablePartialRendering="true">
</asp:ScriptManager>
 <asp:GridView ID="GVAccounts" runat="server" AutoGenerateColumns="False" 
    CellPadding="4" ForeColor="#333333" 
    GridLines="Horizontal" 
    style="position: relative; margin-top: 10px">
        <AlternatingRowStyle BackColor="White" ForeColor="#284775" />
        <Columns>
            <asp:BoundField DataField="branch" HeaderText="Branch" 
                SortExpression="branch" />
            <asp:BoundField DataField="no" HeaderText="Account" 
                SortExpression="account" />
            <asp:TemplateField HeaderText="Name" SortExpression="name">
                <EditItemTemplate>
                    <asp:TextBox ID="TextName" runat="server" Text='<%# Eval("name") %>'></asp:TextBox>
                </EditItemTemplate>
                <ItemTemplate>
                    <asp:Label ID="LabelName" runat="server" Text='<%# Eval("name") + " " + Eval("surname") %>'></asp:Label>
                </ItemTemplate>
            </asp:TemplateField>
            <asp:BoundField DataField="type" HeaderText="Type" SortExpression="type" />
            <asp:BoundField DataField="sub" HeaderText="Sub" SortExpression="sub" />
            <asp:BoundField DataField="TotalAmount" HeaderText="Hold" 
                SortExpression="TotalAmount" />
            <asp:BoundField DataField="loc" HeaderText="LOC" DataFormatString="{0:C}" SortExpression="loc" />

            <asp:BoundField DataField="locstatus" HeaderText="LOC status" 
                SortExpression="locstatus" />

            <asp:BoundField DataField="HoldCalc" HeaderText="OD/EX Amt" SortExpression="HoldCalc" />
            <asp:BoundField DataField="odtimes" HeaderText="#OD" SortExpression="odtimes" />

            <asp:TemplateField>
                <ItemTemplate>
                    <tr>

                    <td colspan="100%">
                        <div id="gridChild" style="display: inline; position: relative; left: 15px; overflow: auto">
        <asp:UpdatePanel ID="UpdateGV" runat="server" UpdateMode="Conditional">
        <ContentTemplate>
            <asp:GridView ID="gvChildGrid" runat="server" AutoGenerateColumns="false" 
                                BorderStyle="Double"  BorderColor="#5D7B9D" Width="80%">
               <HeaderStyle BackColor="#5D7B9D" Font-Bold="true" ForeColor="White" />

                <RowStyle BackColor="#E1E1E1" />
                <AlternatingRowStyle BackColor="White" />
                <HeaderStyle BackColor="#5D7B9D" Font-Bold="true" ForeColor="White" />
                    <Columns>
                     <asp:TemplateField HeaderText="Select">
                       <ItemTemplate>
                         <asp:CheckBox ID="chkSelect" runat="server" AutoPostBack="true"
                                            oncheckedchanged="chkSelect_CheckedChanged" />
                       </ItemTemplate>  
                    </asp:TemplateField>

                    <asp:BoundField DataField="effective" HeaderText="Effective" HeaderStyle-HorizontalAlign="Left" />
                    <asp:BoundField DataField="desc_" HeaderText="Desc" HeaderStyle-HorizontalAlign="Left" />
                    <asp:BoundField DataField="code" HeaderText="TC" HeaderStyle-HorizontalAlign="Left" />
                    <asp:BoundField DataField="amount" HeaderText="Amount" HeaderStyle-HorizontalAlign="Left" />
                    <asp:BoundField DataField="tracer" HeaderText="Cheq #" HeaderStyle-HorizontalAlign="Left" />
                    <asp:BoundField DataField="empltype" HeaderText="Empl" HeaderStyle-HorizontalAlign="Left" />
                    <asp:BoundField DataField="balance" HeaderText="OD/EXT Amt" HeaderStyle-HorizontalAlign="Left" />
             <asp:TemplateField HeaderText="Note">
               <ItemTemplate>
                   <asp:DropDownList ID="DropDownNote" runat="server" 
                                onselectedindexchanged="DropDownNote_SelectedIndexChanged" 
                                            AutoPostBack="True">
                                            <asp:ListItem></asp:ListItem>
                                            <asp:ListItem>MWC</asp:ListItem>
                                            <asp:ListItem>CBM</asp:ListItem>
                                            <asp:ListItem>Return</asp:ListItem>
                                            <asp:ListItem>TSF</asp:ListItem>
                                            <asp:ListItem>OK NO S/C</asp:ListItem>
                                        </asp:DropDownList>
                                    </ItemTemplate>
                                </asp:TemplateField>
                                <asp:TemplateField HeaderText="Note1">
                                    <ItemTemplate>
                                        <asp:DropDownList ID="ddNote2" runat="server">
                                            <asp:ListItem Selected="True">NSF</asp:ListItem>
                                            <asp:ListItem>Funds Not Clear</asp:ListItem>
                                            <asp:ListItem>Post Dated</asp:ListItem>
                                            <asp:ListItem>Stale Dated</asp:ListItem>
                                            <asp:ListItem>Stop Payment</asp:ListItem>
                                            <asp:ListItem>Encoding Incorrect</asp:ListItem>
                                        </asp:DropDownList>
                                    </ItemTemplate>
                                </asp:TemplateField>
                                <asp:TemplateField HeaderText="Branch">
              <ItemTemplate>
               <asp:DropDownList ID="ddBranch" runat="server" DataSourceID="BranchDataSource" 
                                            DataTextField="branch" DataValueField="branch">
                                        </asp:DropDownList>
                                        <asp:SqlDataSource ID="BranchDataSource" runat="server" 
                                            ConnectionString="<%$ ConnectionStrings:ThirdPartyDataConnectionString %>" 
                                            SelectCommand="SELECT [branch] FROM [branch]"></asp:SqlDataSource>
                                    </ItemTemplate>
                                </asp:TemplateField>
                                <asp:TemplateField HeaderText="Account">
                                    <ItemTemplate>
                                        <asp:TextBox ID="TextNo" runat="server" ></asp:TextBox>
                                    </ItemTemplate>
                                </asp:TemplateField>
                                <asp:TemplateField HeaderText="Type">
                                    <ItemTemplate>
                                        <asp:DropDownList ID="ddType" runat="server" DataSourceID="typeSource" 
                                            DataTextField="Type" DataValueField="Type">
                                        </asp:DropDownList>
                                        <asp:SqlDataSource ID="typeSource" runat="server" 
                                            ConnectionString="<%$ ConnectionStrings:ThirdPartyDataConnectionString %>" 
                                            SelectCommand="SELECT [Type] FROM [DMDType]"></asp:SqlDataSource>
                                    </ItemTemplate>
                                </asp:TemplateField>
                                <asp:TemplateField HeaderText="Sub">
                                    <ItemTemplate><asp:TextBox ID="TextSub" Width="25px" runat="server"></asp:TextBox></ItemTemplate>
                                </asp:TemplateField>
                            </Columns>
                        </asp:GridView>
                           </ContentTemplate>
                           <Triggers>
                           <asp:AsyncPostBackTrigger ControlID="DropDownNote" EventName="SelectedIndexChanged" />
                           </Triggers>
                        </asp:UpdatePanel>   
                        </div> 
                    </td>

                    </tr>
                </ItemTemplate>
            </asp:TemplateField>
        </Columns>
        <EditRowStyle BackColor="#999999" />
        <FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
        <HeaderStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
        <PagerStyle BackColor="#284775" ForeColor="White" HorizontalAlign="Center" />
        <RowStyle BackColor="#F7F6F3" ForeColor="#333333" />
        <SelectedRowStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" />
        <SortedAscendingCellStyle BackColor="#E9E7E2" />
        <SortedAscendingHeaderStyle BackColor="#506C8C" />
        <SortedDescendingCellStyle BackColor="#FFFDF8" />
        <SortedDescendingHeaderStyle BackColor="#6F8DAE" />
    </asp:GridView>

MWC
煤层气
回来
TSF
好的,没有S/C
国家科学基金会
资金不清楚
迟填日期的
过时的
停止付款
编码错误

我决定采用另一种方式,我在aspx的顶行添加了maintainScrollPositionPostback=“true”,因为客户抱怨每次回发后页面都会返回顶部。我最初使用UpdatePanel来解决这个问题,但我认为这是一个更好的选择


现在,我唯一的问题是让页面在回发后保留下拉框的值,我必须弄清楚如何做到这一点。

您可以在codebehind中注册它(请参见下面接受的答案):但不要使用
e.Row.Cells[0].FindControl(“DropDownNote”)
使用
e.Row.FindControl(“DropDownNote”)
这必须在我假设的row_数据绑定事件中进行?我不确定使用
RowDataBound
是否足够,或者是否必须使用
RowCreated
(如我上面发布的链接所示)。不同之处在于,后者在每次回发时都会执行,而前者会在数据绑定网格时触发。不幸的是,我仍然收到错误消息,我在RowCreated和RowDataBound中都尝试过