尝试保留updatepanel值时出错

时间:2014-08-25 12:32:51

标签: asp.net vb.net gridview

我遇到问题,我的gridview中的几个下拉框在回发时丢失了它们的值。

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

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

我按照这篇文章中的内容:Control in UpdatePanel loses value

但是现在我得到了上述异常,我在这里缺少什么?解决这个问题会保留回发后的下拉值吗?

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

1 个答案:

答案 0 :(得分:0)

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

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