ASP.NET - 将视图状态持久保存到文件会导致ASP Update面板控件出现问题

时间:2011-02-07 22:46:00

标签: c# asp.net ajax updatepanel viewstate

我的ASP.NET项目中的下拉列表控件存在问题,这让我很生气!任何和所有帮助赞赏......

我的页面上的更新面板上有两个DropDownLists,DropDownList1用作DropDownList2的过滤器,DropDownList2又填充一个列表框。问题是当覆盖下面的Page viewstate持久性方法时,会发生以下行为:

1)在DropDownList1中选择一个值,并相应地填充DropDownList2。 2)在DropDownList2中选择一个值,列表框不加载任何内容,DropDownList2会丢失它的选定值。

这些事件的代码隐藏中的逻辑似乎不是问题,因为当我从页面中删除Updatepanel它工作正常! Silimarly,当updatepanel存在但是视图状态没有被覆盖时,它会起作用!

我在Visual Studio中做了一些跟踪,好像DropDownList1的事件正在为第二次回发调用,即使只调用DropDownList2的事件,所以我想知道是否有某种“事件堆栈“由正在调用第一个事件的ASP持有,即使它已经被调用并且应该被清除。它适用于没有UpdatePanels的页面。

我已经覆盖了

Page.SavePageStateToPersistenceMedium 

Page.LoadPageStateFromPersistenceMedium 

按照此示例从文本文件中保存/加载:

http://aspalliance.com/911

已在每个控件上设置以下属性:

<asp:UpdatePanel runat="server" ID="upMain" UpdateMode="Conditional" >

<asp:DropDownList ID="DropDownList1" runat="server" CssClass="TextBoxFull" AutoPostBack="True"  OnSelectedIndexChanged="DropDownList1_SelectedIndexChanged" ondatabound="DropDownList1_DataBound">

<asp:DropDownList ID="DropDownList2" runat="server" CssClass="TextBoxFull" AutoPostBack="True"  OnSelectedIndexChanged="DropDownList2_SelectedIndexChanged" ondatabound="DropDownList2_DataBound">

任何帮助表示赞赏,这让我整天都很生气。

感谢。

1 个答案:

答案 0 :(得分:0)

最终无法想出这个,所以我重写了从PageStatePersister类继承的整个东西,它工作正常。有时它最好从头开始。