Échec du chargement du viewstate
OK ont juste commencé à avoir cette erreur et je ne sais pas pourquoi. J'ai une page d'hébergement qui a listview et un panneau avec un usercontrol. La liste des charges des enregistrements avec un linkbutton. Vous cliquez sur le bouton de lien pour modifier cet enregistrement particulier - qui est chargé dans le formview (à l'intérieur de l'objet usercontrol) qui va modifier le mode. Après une mise à jour se produit dans le formview je suis déclenchement d'un événement qui ma page d'hébergement est à l'écoute pour. La page d'hébergement puis relie le listview pour afficher la mise à jour des données. C'est tout à l'intérieur d'un updatepanel.
Donc ça fonctionne mais quand je puis cliquez sur un autre linkbutton j'obtiens l'erreur ci-dessous:
Message: Sys.WebForms.PageRequestManagerServerErrorException: 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. For example, when adding controls dynamically, the controls added during a post-back must match the type and position of the controls added during the initial request.
Des suggestions sur la façon de résoudre?
Mon listview semble être en cours de rebond avec succès - que je peux voir mes données modifiées.. je ne sais pas pourquoi sa se plaindre de l'état d'affichage lorsque je clique sur le linkbutton. Ou est-il une meilleure façon de mettre à jour les données dans ma listview? Mon listview et formview sont liés à des sources de données (en cas de questions)
Merci pour l'aide!
Voici le code de mon contrôle. D'autres gens ont commenté cette erreur par rapport à la modification du mode de formview mais ils ont essayé un peu de changements sans succès:
public partial class UserControls_RatesEditDate : System.Web.UI.UserControl
{
public delegate void EditDateRateEventHandler(DateTime theDateTime);
public event EditDateRateEventHandler EditDateRateSelected;
public delegate void UpdateDateRateEventHandler();
public event UpdateDateRateEventHandler EditDateRateUpdated;
public int PropertyID { get; set; }
public int AccommodationTypeID { get; set; }
public DateTime TheDateTime { get; set; }
public PropertyCMSRate Rate { get; set; }
//display filters
public bool DisplayMTABuy { get; set; }
public bool DisplayMTASell { get; set; }
public bool DisplayAffiliate { get; set; }
public bool DisplayWeekly { get; set; }
public bool DisplayThirtyDay { get; set; }
public bool DisplayFlexi { get; set; }
protected void Page_PreRender(object sender, EventArgs e)
{
if (Rate != null || TheDateTime != DateTime.MinValue)
{
if (TheDateTime == DateTime.MinValue)
{
frmViewRatesDate.DataSource = new List<PropertyCMSRate> { Rate };
}
else
{
PropertyCMSRateItemDs.SelectParameters["propertyID"].DefaultValue = PropertyID.ToString();
PropertyCMSRateItemDs.SelectParameters["accommodationTypeId"].DefaultValue = AccommodationTypeID.ToString();
PropertyCMSRateItemDs.SelectParameters["theDateTime"].DefaultValue = TheDateTime.ToString();
frmViewRatesDate.DataSourceID = "PropertyCMSRateItemDs";
frmViewRatesDate.ChangeMode(FormViewMode.Edit);
}
frmViewRatesDate.DataBind();
if (frmViewRatesDate.CurrentMode == FormViewMode.Edit)
{
((HiddenField)frmViewRatesDate.FindControl("hdnPropertyID")).Value = PropertyID.ToString();
((HiddenField)frmViewRatesDate.FindControl("hdnAccommTypeID")).Value = AccommodationTypeID.ToString();
}
}
}
protected void lnkEditDate_Click(object sender, EventArgs e)
{
if (EditDateRateSelected != null)
EditDateRateSelected(Convert.ToDateTime(((LinkButton)frmViewRatesDate.Row.FindControl("lnkEditDate")).Text));
}
protected void btnUpdate_Click(object sender, EventArgs e)
{
if (Page.IsValid)
{
if (EditDateRateUpdated != null)
EditDateRateUpdated();
}
}
protected void frmViewRatesDate_ItemCommand(object sender, FormViewCommandEventArgs e)
{
if (e.CommandName == "Update")
{
PropertyCMSRateItemDs.UpdateParameters["propertyId"].DefaultValue = ((HiddenField)frmViewRatesDate.FindControl("hdnPropertyID")).Value;
PropertyCMSRateItemDs.UpdateParameters["accommodationTypeId"].DefaultValue = ((HiddenField)frmViewRatesDate.FindControl("hdnAccommTypeID")).Value;
PropertyCMSRateItemDs.UpdateParameters["minStay"].DefaultValue = ((DropDownList)frmViewRatesDate.FindControl("EditPriceMinStayList")).SelectedValue;
}
}
protected void PropertyCMSRateItemDs_Updated(object sender, ObjectDataSourceStatusEventArgs e)
{
if (EditDateRateUpdated != null)
EditDateRateUpdated();
}
}
OK, voici ma page aspx - désolé réalisés, qui pourraient aider après que j'ai quitté le bureau à prendre de la nourriture. 🙂 Ont mis un commentaire avant de ma listview qui contiennent ce mot..
<%@ MasterType VirtualPath="~/Properties-Cms/AddEdit.master" %>
<%@ Register Src="../UserControls/RatesEditDate.ascx" TagName="RatesEditDate" TagPrefix="uc1" %>
<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" runat="Server">
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<Triggers>
</Triggers>
<ContentTemplate>
<asp:ValidationSummary ID="ValidationSummary1" runat="server" ValidationGroup="Main" />
<div class="bluebox">
<asp:ValidationSummary ID="ValidationSummary2" runat="server" ValidationGroup="AddAccommodationType" />
<asp:CustomValidator ID="DisplayPriceValidation" Display="Dynamic" runat="server" OnServerValidate="DisplayPrice_Validated"
ValidationGroup="Main" ErrorMessage="Please ensure you have selected Accommodation and selected a valid display rates option">
</asp:CustomValidator>
<div class="col33">
<!-- accommodation -->
<div class="field">
<asp:Label ID="Label1" runat="server" Text="Select Accommodation" AssociatedControlID="Accommodations1" />
<asp:DropDownList ID="Accommodations1" runat="server" AutoPostBack="true" DataTextField="AccommodationTypeDescription"
DataValueField="Id" OnDataBound="Accommodations1_DataBound" OnSelectedIndexChanged="Accommodations1_SelectedIndexChanged"
Width="200px" DataSourceID="AccommodationDs">
</asp:DropDownList>
<asp:ObjectDataSource ID="AccommodationDs" runat="server" OldValuesParameterFormatString="original_{0}"
SelectMethod="ListByPropertyId" TypeName="Shared.MtaLib.Bll.PropertyAccommodationController">
<SelectParameters>
<asp:Parameter Name="PropertyId" Type="Int32" />
</SelectParameters>
</asp:ObjectDataSource>
</div>
</div>
<!-- middle column -->
<div class="col33">
<ul style="list-style-type: none;">
<li>
<asp:Label ID="Label100" runat="server" Text="Accommodation" AssociatedControlID="lblAccom" /> <asp:Label
ID="lblAccom" runat="server" Text="" /></li>
<li>
<asp:Label ID="Label101" runat="server" Text="Local Label" AssociatedControlID="lblLocalLabel" /> <asp:Label
ID="lblLocalLabel" runat="server" Text="" /></li>
</ul>
</div>
<!--Right hand side Level 1 -->
<div class="col33">
<asp:Button runat="server" ID="btnAddAccommodation" Text="Add Accommodation" OnClick="btnAddAccommodation_Click" /><br />
<br />
<asp:LinkButton runat="server" ID="lnkEditAccommodation" Text="View/Edit available Accommodations"
OnClick="lnkEditAccommodation_Click" />
<br />
</div>
<div style="clear: both;">
</div>
</div>
<!--Left hand side Level 2 -->
<asp:Panel runat="server" ID="pnlViewAccommodationRatesDates">
<div style="clear: both;" />
<div class="box">
<div class="col40">
Display rates Range<br />
<asp:RadioButton ID="ViewRange" runat="server" GroupName="DisplayDate" Checked="true" />
<asp:Label runat="server" ID="Label5" AssociatedControlID="txtDisplayFrom" Text="From" />
<asp:TextBox ID="txtDisplayFrom" runat="server"></asp:TextBox>
<asp:Label runat="server" ID="Label6" AssociatedControlID="txtDisplayTo" Text="To" />
<asp:TextBox ID="txtDisplayTo" runat="server"></asp:TextBox>
</div>
<div class="col20">
<br />
<asp:RadioButton ID="ViewRange1" runat="server" GroupName="DisplayDate" Text="Next 1 month" /><br />
<asp:RadioButton ID="ViewRange3" runat="server" GroupName="DisplayDate" Text="Next 3 month" /><br />
<asp:RadioButton ID="ViewRange6" runat="server" GroupName="DisplayDate" Text="Next 6 month" />
</div>
<div class="col20">
Show<br />
<asp:CheckBox ID="chkDisplayMTABuy" runat="server" Text="MTA Buy" Checked="true" /><br />
<asp:CheckBox ID="chkDisplayMTASell" runat="server" Text="MTA Sell" Checked="true" /><br />
<asp:CheckBox ID="chkDisplayAffiliateNett" runat="server" Text="Affiliate Nett" Checked="true" /><br />
<asp:CheckBox ID="chkDisplayWeekly" runat="server" Text="Weekly" Checked="true" /><br />
<asp:CheckBox ID="chkDisplay30Day" runat="server" Text="30 Day" Checked="true" /><br />
<asp:CheckBox ID="chkDisplayFlexi" runat="server" Text="Flexi" Checked="true" />
</div>
<div class="col20">
<br />
<br />
<br />
<asp:Button ID="btnDisplayRates" runat="server" Text="Display Rates" OnClick="btnDisplayRates_Click" />
<br />
<br />
<asp:LinkButton ID="lnkAddEditRate" runat="server" Text="Add /Edit Rates" OnClick="lnkAddEditRate_Click" />
</div>
<div style="clear: both;" />
</div>
</asp:Panel>
<!-- hidden panel removed as I'm out of characters -->
<!-- Listview containing user control.. usercontrol has formview with a linkbutton -->
<asp:Panel runat="server" ID="pnlViewAccommodationRates" Visible="false">
<div class="propertyaddedit_ratesbox">
<fieldset>
<legend>Click on individual dates to edit</legend>
<asp:Panel ID="Panel5" runat="server" ScrollBars="Vertical" Height="400">
<asp:ListView ID="PropertyAccommodationRates1" runat="server" DataSourceID="PropertyCMSRateListDs"
ItemPlaceholderID="itemsGoHere" OnItemDataBound="PropertyAccommodationRates1_ItemDataBound"
GroupItemCount="7" GroupPlaceholderID="groupsGoHere">
<GroupTemplate>
<tr>
<asp:PlaceHolder runat="server" ID="itemsGoHere" />
</tr>
</GroupTemplate>
<ItemTemplate>
<td>
<uc1:RatesEditDate ID="RatesViewDate1" runat="server" OnEditDateRateSelected="RatesEditDate1_EditDateRateSelected"
OnEditDateRateUpdated="RatesEditDate1_EditDateRateUpdated" />
</td>
</ItemTemplate>
<LayoutTemplate>
<table width="525px" cellspacing="2">
<tr class="propertyaddedit_gridViewRates">
<th class="propertyaddedit_ratesGrid">
Monday
</th>
<th class="propertyaddedit_ratesGrid">
Tuesday
</th>
<th class="propertyaddedit_ratesGrid">
Wednesday
</th>
<th class="propertyaddedit_ratesGrid">
Thursday
</th>
<th class="propertyaddedit_ratesGrid">
Friday
</th>
<th class="propertyaddedit_ratesGrid">
Saturday
</th>
<th class="propertyaddedit_ratesGrid">
Sunday
</th>
</tr>
<tr>
<asp:PlaceHolder runat="server" ID="groupsGoHere" />
</tr>
</table>
</LayoutTemplate>
</asp:ListView>
<asp:ObjectDataSource ID="PropertyCMSRateListDs" runat="server" SelectMethod="ListPropertyCMSRates"
TypeName="Shared.MtaLib.Bll.PropertyRateController" OnSelecting="PropertyCMSRateListDs_Selecting">
<SelectParameters>
<asp:Parameter Name="propertyId" Type="Int32" />
<asp:Parameter Name="accommodationTypeId" Type="Int32" />
<asp:Parameter Name="minDateTime" Type="DateTime" />
<asp:Parameter Name="maxDateTime" Type="DateTime" />
<asp:Parameter Name="fillMondays" Type="Boolean" DefaultValue="true" />
</SelectParameters>
</asp:ObjectDataSource>
</asp:Panel>
</fieldset>
</div>
</asp:Panel>
<div style="clear: both;">
</div>
<!-- this is the usercontrol where the edit occurs -->
<div runat="server" id="divEditRate" visible="true">
<uc1:RatesEditDate ID="RatesEditDate1" runat="server" />
</div>
</ContentTemplate>
</asp:UpdatePanel>
</asp:Content>
Mon contrôle de l'utilisateur:
<%@ Control Language="C#" AutoEventWireup="true" CodeFile="RatesEditDate.ascx.cs"
Inherits="UserControls_RatesEditDate" %>
<asp:FormView ID="frmViewRatesDate" runat="server" Height="50px" Width="125px" OnItemCommand="frmViewRatesDate_ItemCommand"
DataKeyNames="TheDateTime">
<ItemTemplate>
<asp:LinkButton ID="lnkEditDate" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "TheDateTime", "{0:dd/MM/yyyy}") %>'
OnClick="lnkEditDate_Click" />
<asp:Literal ID="Literal1" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "MTABuyRateDaily", "{0:n}") %>'
Visible='<%# DisplayMTABuy %>' />
<asp:Literal ID="Literal2" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "MTASellRateDaily", "{0:n}") %>'
Visible='<%# DisplayMTASell %>' />
<asp:Literal ID="Literal3" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "AffiliateNettDaily", "{0:n}") %>'
Visible='<%# DisplayAffiliate %>' />
<asp:Literal ID="Literal4" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "MTABuyRateWeekly", "{0:n}") %>'
Visible='<%# DisplayWeekly %>' />
<asp:Literal ID="Literal5" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "MTASellRateWeekly", "{0:n}") %>'
Visible='<%# DisplayWeekly %>' />
<asp:Literal ID="Literal6" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "AffiliateNettWeekly", "{0:n}") %>'
Visible='<%# DisplayWeekly %>' />
<asp:Literal ID="Literal7" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "ThirtyDay", "{0:n}") %>'
Visible='<%# DisplayThirtyDay %>' />
<asp:Literal ID="Literal8" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "Flexi", "{0:n}") %>'
Visible='<%# DisplayFlexi %>' />
</ItemTemplate>
<EditItemTemplate>
<div class="field">
<asp:Literal ID="TheDate" runat="server" Text='<%# Bind("TheDateTime", "{0:dd/MM/yyyy}") %>' />
</div>
<div class="field">
<asp:Label ID="Label1" Text="MTA buy rate" AssociatedControlID="MTABuyRate1" runat="server" /><asp:TextBox
ID="MTABuyRate1" runat="server" Text='<%# Bind("MTABuyRateDaily", "{0:n}")%>' />
<asp:CompareValidator ID="MTABuyRateValidator" runat="server" Type="Currency" ControlToValidate="MTABuyRate1"
Operator="GreaterThan" ValueToCompare="0" ErrorMessage="" Display="Dynamic" ValidationGroup="EditPrice">
<asp:Image ID="Image8" SkinID="ValidationErrorImage" runat="server" />
</asp:CompareValidator>
<asp:RequiredFieldValidator ID="MTABuyRateValidator2" runat="server" ControlToValidate="MTABuyRate1"
ErrorMessage="" Display="Dynamic" ValidationGroup="EditPrice">
<asp:Image ID="Image33" SkinID="ValidationErrorImage" runat="server" />
</asp:RequiredFieldValidator>
</div>
<!-- similar items removed due to character restriction -->
<div class="field">
<asp:Label ID="Label6" Text="Total PAX" runat="server" AssociatedControlID="TotalPax1" />
<asp:CompareValidator ID="TotalPaxValidator1" runat="server" ControlToValidate="TotalPax1"
Operator="NotEqual" ValueToCompare="0" ErrorMessage="Please choose a non zero Total Pax "
Display="Dynamic" ValidationGroup="EditPrice">
<asp:Image ID="Image15" SkinID="ValidationErrorImage" runat="server" />
</asp:CompareValidator>
<asp:DropDownList ID="TotalPax1" runat="server">
<asp:ListItem Value="0" />
<asp:ListItem Value="1" />
<asp:ListItem Value="2" />
<asp:ListItem Value="3" />
<asp:ListItem Value="4" />
<asp:ListItem Value="5" />
<asp:ListItem Value="6" />
<asp:ListItem Value="7" />
<asp:ListItem Value="8" />
<asp:ListItem Value="9" />
<asp:ListItem Value="10" />
</asp:DropDownList>
</div>
<div class="field">
<asp:Label runat="server" ID="Label15" AssociatedControlID="EditPriceMinStayList"
Text="Min stay (nights)" />
<asp:CompareValidator ID="EditPriceMinStayListValidator1" runat="server" ControlToValidate="EditPriceMinStayList"
Operator="NotEqual" ValueToCompare="0" ErrorMessage="Please choose a non zero Min Stay"
Display="Dynamic" ValidationGroup="EditPrice">
<asp:Image ID="Image6" SkinID="ValidationErrorImage" runat="server" />
</asp:CompareValidator>
<!-- todo bind-->
<asp:DropDownList ID="EditPriceMinStayList" runat="server">
<asp:ListItem Value="0" />
<asp:ListItem Value="1" />
<asp:ListItem Value="2" />
<asp:ListItem Value="3" />
<asp:ListItem Value="4" />
<asp:ListItem Value="5" />
<asp:ListItem Value="6" />
<asp:ListItem Value="7" />
<asp:ListItem Value="8" />
<asp:ListItem Value="9" />
<asp:ListItem Value="10" />
<asp:ListItem Value="11" />
<asp:ListItem Value="12" />
<asp:ListItem Value="13" />
<asp:ListItem Value="14" />
<asp:ListItem Value="15" />
<asp:ListItem Value="16" />
<asp:ListItem Value="17" />
<asp:ListItem Value="18" />
<asp:ListItem Value="19" />
<asp:ListItem Value="20" />
<asp:ListItem Value="21" />
<asp:ListItem Value="22" />
<asp:ListItem Value="23" />
<asp:ListItem Value="24" />
<asp:ListItem Value="25" />
<asp:ListItem Value="26" />
<asp:ListItem Value="27" />
<asp:ListItem Value="28" />
<asp:ListItem Value="29" />
<asp:ListItem Value="30" />
</asp:DropDownList>
</div>
<div class="field">
<%--<asp:Button ID="btnUpdate" runat="server" Text="Update" OnClick="btnUpdate_Click" CommandName="Update" />--%>
<asp:Button ID="btnUpdate" runat="server" Text="Update" CommandName="Update" ValidationGroup="EditPrice" />
</div>
<asp:HiddenField runat="server" ID="hdnPropertyID" />
<asp:HiddenField runat="server" ID="hdnAccommTypeID" />
</EditItemTemplate>
</asp:FormView>
<asp:ObjectDataSource ID="PropertyCMSRateItemDs" runat="server" SelectMethod="ListPropertyCMSRate"
TypeName="Shared.MtaLib.Bll.PropertyRateController" UpdateMethod="UpdatePropertyCMSRate"
OldValuesParameterFormatString="original_{0}" OnUpdated="PropertyCMSRateItemDs_Updated">
<UpdateParameters>
<asp:Parameter Name="propertyId" Type="Int32" />
<asp:Parameter Name="accommodationTypeId" Type="Int32" />
<asp:Parameter Name="minStay" Type="Int32" />
<asp:Parameter Name="TheDateTime" Type="DateTime" />
<asp:Parameter Name="MTABuyRateDaily" Type="Decimal" />
<asp:Parameter Name="MTASellRateDaily" Type="Decimal" />
<asp:Parameter Name="AffiliateNettDaily" Type="Decimal" />
<asp:Parameter Name="MTABuyRateWeekly" Type="Decimal" />
<asp:Parameter Name="MTASellRateWeekly" Type="Decimal" />
<asp:Parameter Name="AffiliateNettWeekly" Type="Decimal" />
<asp:Parameter Name="ThirtyDay" Type="Decimal" />
<asp:Parameter Name="Flexi" Type="Decimal" />
<asp:Parameter Name="IsBreakfastIncluded" Type="Boolean" />
<asp:Parameter Name="IsFairWarning" Type="Boolean" />
<asp:Parameter Name="TotalPax" Type="Int32" />
<asp:Parameter Name="original_TheDateTime" Type="DateTime" />
</UpdateParameters>
<SelectParameters>
<asp:Parameter Name="propertyId" Type="Int32" DefaultValue="0" />
<asp:Parameter Name="accommodationTypeId" Type="Int32" DefaultValue="0" />
<asp:Parameter Name="theDateTime" Type="DateTime" />
</SelectParameters>
</asp:ObjectDataSource>
- La seule dynamique des contrôles je pense, est que la listview itemtemplate contient un contrôle de l'utilisateur. Et comme je suis d'appeler un rebind sur la liste, il sera différent pour la première fois la page chargée. Mais je dois actualiser la liste en quelque sorte à refléter les nouvelles données. Ou est le problème sur la panneau de mise à jour liées?
- Enlevé mon updatepanel et je reçois toujours le même message d'erreur. Aussi essayé de commenter le databind de ma liste d'affichage et obtiens toujours la même erreur.. donc est évidemment autre chose.
- Essayé de mettre le viewstate être désactivé sur mon listview et/ou mon formview et cela a conduit à la page ne fonctionne pas comme il devrait avoir. Quand j'ai cliqué sur mon linkbutton soit la grille de perdre ses éléments.. ou le contrôle ne serait pas affichée en mode édition.
- C'est aussi le seul qui se passe après que j'ai mis à jour un enregistrement dans mon formview donc cliqué sur mise à jour.. alors fait le databind sur ma liste. La prochaine fois que je clique sur un bouton de lien, il échoue. Si je clique sur plusieurs boutons de lien sans faire le modifier alors qu'il fonctionne comme prévu.
- Avoir lu un peu de gens disant qu'ils avaient des problèmes lorsqu'ils changer de mode. Mon de contrôle de l'utilisateur doit être en mode readonly lors de sa affiché dans la liste - mais lorsque l'utilisateur clique sur modifier, puis séparément, situé à l'utilisateur de contrôler les charges formview dans le mode d'édition. Je sais après l'enregistrement de l'formview remonte à la mode readonly - et-je cacher le panneau. Certaines personnes ont dit pour le mettre en mode d'édition par défaut pour surmonter ce problème, mais j'en ai besoin pour être en lecture seule dans la liste, d'autres ont inclus tous les contrôles d'édition en mode readonly (et caché) - semble fou!
Vous devez vous connecter pour publier un commentaire.
J'ai combattu avec ce problème pendant plusieurs heures et les jours.
Aucune des réponses que j'ai trouvé complètement résolu mon problème, mais je ne l'ai enfin trouver une solution.
Mon scénario est comme suit.
J'ai un GridView et un FormView. Ce sont deux points de vue d'un contrôle MultiView.
- Je afficher une liste de données dans le contrôle GridView. Mon bouton modifier les commutateurs de la FormView parce qu'il y a plus de champs que je veux modifier que de rentrer dans une ligne horizontale sur le contrôle gridview (sans défilement horizontal).
Si je annuler le mode d'édition de la FormView et de retour à la GridView (j'utilise un événement OnClick pour ce faire), la prochaine fois qu'une publication qui se passe, je reçois un état d'affichage d'erreur.
Si j'annule le mode édition de la FormView et tout simplement de basculer En mode lecture seule, puis sur annuler revenir à la GridView, tout fonctionne bien.
SOLUTION:
Ma solution a été de définir le mode par défaut de l'FormView "Modifier".
Ma théorie est que si le FormView mode par défaut est "ReadOnly", quand j'ai annuler le mode d'Édition de la FormView, la prochaine fois que le chargement de la page, il essaie d'appliquer l'état d'affichage du mode Édition au mode ReadOnly (valeur par défaut lors du chargement de la page). Par le réglage de l'affichage par défaut à "Modifier", le ViewState qui a été enregistré avec le mode de modification est rechargé dans le désormais nouveau mode d'Édition (par défaut) après le chargement de la page.
Tout cela se produit même si la ActiveView de la MultiView est de l'affichage de la Grille et non pas sur la Forme.
Je n'ai pas eu du tout de l'état d'affichage des problèmes depuis la mise à la mode par défaut de l'FormView "Modifier"
Espère que cette aide, et je souhaite la bienvenue à tous les commentaires.
Grâce.
Harv Sather
Il est difficile de vous donner une réponse exacte sans regarder à travers l'ensemble de votre page aspx, mais en général, ce type de problèmes se produisent lorsque vous modifiez des éléments qui ont l'état d'affichage est activé à l'aide de javascript. Lorsque vous publier sur votre serveur (en cliquant sur un bouton de lien, par exemple), l'état d'affichage sur votre page est différente de la viewstate le serveur est à la recherche d', de sorte qu'il se bloque. C'est une mesure de sécurité.
Êtes-vous à l'aide d'AJAX par l'intermédiaire d'un panneau de mise à jour? Avez-vous certaines parties de votre page dans un panneau de mise à jour et d'autres pas? Peut-être que votre événement est la mise à jour de certains contrôles et pas d'autres.
Pourriez-vous fournir une version annotée de votre page ASPX que nous puissions regarder?
Ce problème a été mon dernier cauchemar aussi. Il existe de nombreuses possibilités qui peuvent mener à la fin avec "impossible de charger l'état d'affichage d'erreur". La plupart du temps, il est lié à créer dynamiquement des contrôles et des .Visible propriétés des contrôles qui peuvent changer la hiérarchie des contrôles ajoutés à la page.
À ma connaissance, le problème pourrait tourner autour de Visible propriétés des contrôles. S'il vous plaît essayer de supprimer la liaison de données pour les propriétés Visibles de la première et de voir comment il va.
Eh bien, il semble que mon problème est lié à la formview et de l'évolution des modes.
J'ai fini par la création d'un deuxième usercontrol avec un formview qui ne dispose que de le modifier un élément de modèle, et j'ai mis le mode par défaut à modifier. En utilisant ce une seule pour l'édition, et de celui d'origine, pour la visualisation du taux a réussi à se débarrasser de l'état d'affichage d'erreur.
Il n'est évidemment pas idéal que je ne devrais pas avoir à le faire - mais, alors que j'ai essayé de le forcer à ne pas basculer en mode readonly après avoir enregistré les modifications - rien, j'ai essayé permettrait d'éviter que l'état d'affichage d'erreur. Passé assez longtemps sur cette question déjà temps de passer!! Merci pour les suggestions si les gens 🙂
Échec du chargement de viewstate cela se produit principalement lors de l'utilisation de quelques intégré dans les commandes de l'ASP contrôles qui change le point de vue à la post-retour instace ou Asynchrone Publication de l'événement
Exemple: les Commandes comme
Gridview
,Multiview
,Formview
,Listview
.Pour tous les contrôles les événements de commande comme
'edit'
(qui convers en mode d'édition) à ce stade, il n'y a pas d'événement du 2 existe comme 1)'onrowediting'
2)'onrowedited'
Note 2 Événement N'existe pas. si vous essayez d'ajouter des contrôles dynamiquement à ce point 'Échec du chargement de viewstate' se produit.
Solution: Nous avons besoin d'utiliser les commandes comme
'select'
qui a deux activités distinctes, comme 1)'onselectedindexchanging'
et 2)'onselectedindexchanged'
Utiliser 2 ème cas où l'on peut ajouter des contrôles et de définir le css, les propriétés.. dynamiquement. qui ne sera pas à travers échec du chargement de l'état d'affichage d'erreur. mais même si nous l'utilisons dans le 1er cas, il peut lancer l'erreur.
PAS RECOMMANDÉ mais vous avez l'option de désactivation de l'état d'affichage dans votre .fichier aspx via le ViewStateMode variable.