Не удалось загрузить Viewstate Error после редактирования Gridview в ModalPopupExtender - PullRequest
1 голос
/ 03 мая 2019

Я получаю следующую ошибку.

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, я получу ошибку.

DropDownList

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

Gridview, когда привязка данных с новыми данными вызывает ошибку

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

Я попытался загрузить Datatable из ViewState в методе LoadViewState.Я все еще получаю сообщение об ошибке.

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

, если я добавлю EnableViewState="false" на страницу или GridView, ошибка исчезнет, ​​но моя GridView в ModalPopupExtender не обновляется.

...