Failed to Load Viewstate Error after editing Gridview in ModalPopupExtender

197 Views Asked by At

I am getting the following error.

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.

The scenario is as follows I have a Gridview that is bound after a DropDownList is selected. Then you can click a row on the Gridview and a ModalPopupExtender pops up. There is another GridView in the popup. If I edit that Gridview and then exit the ModalPopupExtender, and then select a different value on the DropDownList which generates the original Gridview I get the error.

DropDownList

<asp:DropDownList ID="SearchCategoryDD" runat="server" DataSourceID="InductionCategoriesDS" DataTextField="CompentencyCategory" DataValueField="CompentencyCategoryID" AutoPostBack="True" OnDataBound="SearchCategoryDD_DataBound" OnSelectedIndexChanged="SearchCategoryDD_SelectedIndexChanged"></asp:DropDownList>

Gridview when Databound with new data causes error

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

ModalPopupExtender with Gridview

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

I have tried the loading the Datatable from ViewState in the LoadViewState method. I still get the error.

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();
    ......
    ...

if I put EnableViewState="false" into the page or the GridView the error goes away but my GridView in the ModalPopupExtender does not update.

0

There are 0 best solutions below