在ModalPopupExtender中编辑Gridview后无法加载Viewstate错误

时间:2019-05-03 01:00:19

标签: c# asp.net gridview viewstate modalpopupextender

我遇到以下错误。

HttpStatusCode:500
Name:Sys.WebForms.PageRequestManagerServerErrorException
Message: Sys.WebForms.Page.RequestManagerServerErrorException
Failed to Load viewstate. The control tree into which viewstate is being 
loaded must match the control tree that was used to save viewstate during 
the previous request.

场景如下:我有一个Gridview,该DropDownList在选择Gridview之后绑定。然后,您可以单击ModalPopupExtender上的一行,然后弹出GridView。弹出窗口中还有另一个Gridview。如果我编辑了ModalPopupExtender,然后退出DropDownList,然后在Gridview上选择了另一个值,该值生成了原始的<asp:DropDownList ID="SearchCategoryDD" runat="server" DataSourceID="InductionCategoriesDS" DataTextField="CompentencyCategory" DataValueField="CompentencyCategoryID" AutoPostBack="True" OnDataBound="SearchCategoryDD_DataBound" OnSelectedIndexChanged="SearchCategoryDD_SelectedIndexChanged"></asp:DropDownList> ,那么我会收到错误消息。

DropDownList

<asp:UpdatePanel ID="UpdatePanel1" runat="server"><ContentTemplate>
    <asp:GridView runat="server" ID="SkillsXXX"  OnRowDataBound="SkillsXXX_OnRowDataBound" >
        <Columns>
            <asp:TemplateField>
                <EditItemTemplate>
                    <asp:LinkButton runat="server" ID="SelectLBXX" Visible="False" OnClick="SelectLBXX_OnClick"></asp:LinkButton>
                    <asp:Label runat="server" ID="EmployeeXXXXD"  Text='<%# Bind("EmployeeID") %>' Visible="False"></asp:Label>
                 </EditItemTemplate>
......
...

与新数据绑定的网格视图导致错误

<asp:Button ID="EditSupplierContactPopupBTN" runat="server" Text="" Style="visibility: hidden;" />
<ajaxToolkit:ModalPopupExtender ID="EditSupplierContactMPE" runat="server" CancelControlID="EditSupplierContactCancelBTN"
                TargetControlID="EditSupplierContactPopupBTN" PopupControlID="EditSupplierContactPanel" PopupDragHandleControlID="EditSupplierContactHeader"
                Drag="true" BackgroundCssClass="ModalPopupBG">
</ajaxToolkit:ModalPopupExtender>

<asp:Panel ID="EditSupplierContactPanel" runat="server" CssClass="PopupPNL" Style="display: none"> <!--  Style="display: none" -->
    <div class="PopupHeader" id="EditSupplierContactHeader">
        <div class="PopupControls">
            <asp:Button ID="EditSupplierContactCancelBTN" runat="server" Text="Close" />
        </div>
            Edit Truck Driver
    </div>
    <div class="PopupBody">
        <asp:UpdatePanel ID="UpdatePanel3" runat="server"><ContentTemplate>
             <asp:GridView ID="Competancies2GV" runat="server" AutoGenerateColumns="False" DataKeyNames="SkillsMatrixID"  Width="100%">
                  <Columns>
                      <asp:TemplateField InsertVisible="False" SortExpression="SkillsMatrixID">
                          <EditItemTemplate>
                              <asp:Label ID="Label1" runat="server" Text='<%# Eval("SkillsMatrixID") %>'></asp:Label>
                           </EditItemTemplate>
                           <ItemTemplate>
                               <asp:LinkButton ID="EditSkillsMatrixLB" runat="server" CommandArgument='<%# Eval("SkillsMatrixID") %>' OnCommand="EditSkillsMatrixLB2_Command">Edit</asp:LinkButton>
                                <asp:HiddenField runat="server" ID="SkillsMatrixIDHF" Value='<%# Bind("SkillsMatrixID") %>'/>
                            </ItemTemplate>
                         </asp:TemplateField>
                         <asp:BoundField DataField="CompentencyCategory" HeaderText="Category" SortExpression="CompentencyCategory">
                         </asp:BoundField>
                         <asp:BoundField DataField="CompentencyName" HeaderText="Compentency" SortExpression="CompentencyName">
                          </asp:BoundField>
        ...........
        ........
        .....

带有Gridview的ModalPopupExtender

Datatable

我尝试用ViewState方法从LoadViewState加载protected override void LoadViewState(object earlierState) { base.LoadViewState(earlierState); dataTable = (DataTable)ViewState["dataTable2"]; SkillsMatrixGV.DataSource = dataTable; compentencyDataTable = (DataTable) ViewState["CompentencyDataTable2"]; Competancies2GV.DataSource = compentencyDataTable; Competancies2GV.DataBind(); ...... ... 。我仍然会收到错误消息。

LoadViewState

EnableViewState="false"

如果我将GridView放入页面或GridView,错误消失了,但是我在ModalPopupExtender中的{{1}}没有更新。

0 个答案:

没有答案