Asp.Net动态控制回发

时间:2011-05-13 05:16:11

标签: asp.net dynamic controls postback

我有一个asp页面,其中控件是从Page_Init()上的DB动态添加的 EnableViewState设置为false。

其中一个动态控件是CheckBox,选中后会导致回发。

现在在Page_Init上我重新填充我的页面(根据规则更改后),复选框的checked属性现在为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;
    }

如果我对另一个控件的可见属性执行相同操作,则可以正常工作。

有什么想法可以导致这个或建议的方法覆盖以不加载以前的状态?

下面的答案帮助我创建了一个解决方法:

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;
}

1 个答案:

答案 0 :(得分:0)

修改

设置控件的回发数据,在LoadPageStateFromPersistenceMedium()中查看:

var val = Request[Request["__EVENTTARGET"]];

不幸的是,Request对象是readonly

我不知道有任何其他方法可以阻止它将值设置为客户端更改为的值,除非在{{1}之后将值设置为LoadPageStateFromPersistenceMedium()中的值已设置。