我有一個asp頁面,其中控件是從Page_Init()上的數據庫動態添加的() EnableViewState設置爲false。Asp.Net動態控件回發
其中一個動態控件是CheckBox,當它被選中時會導致回發。
現在在Page_Init我重新填充我的頁面(根據規則更改後),複選框的checked屬性現在爲false。
從我所看到的它始終保持false到LoadPageStateFromPersistenceMedium()的末尾。
protected override object LoadPageStateFromPersistenceMedium()
{
Control cntrl = Page.FindControl("FINS10CopyAddress");
Boolean check = ((CheckBox)cntrl).Checked;
return null;
}
然後在OnPreLoad()上突然又變爲真。
protected override void OnPreLoad(EventArgs e)
{
Control cntrl = Page.FindControl("FINS10CopyAddress");
Boolean check = ((CheckBox)cntrl).Checked;
}
如果我對另一個控件的visible屬性做了同樣的操作,
任何想法是什麼會導致這種或建議的方法覆蓋不加載以前的狀態?
下面的答案幫助我創建一個解決方法:
dataValue cntrl = ((Helper)Session["helper"]).Event.Control(Request["__EVENTTARGET"]);
if (cntrl != null)
{
if (cntrl is webCheckBox)
((CheckBox)Page.FindControl(Request["__EVENTTARGET"])).Checked = (Boolean)cntrl.Value;
}
這聽起來完全像viewstate正在填充你的控件。你有沒有在調試模式下檢查你的viewstate對象,以確保viewstate沒有加載?兩種方法中的 – 2011-05-13 05:26:47
ViewState.Count = 0。 – DeWet 2011-05-13 05:31:35