我有一个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