如果自定义控件需要postback数据,实现 LoadPostData 方法
它在 IPostBackDataHandler 接口中。在该方法中通过postCollection对象可以提取画面上所有控件的
ViewState值。如果自定义控件是符合控件,postCollection尤其有用, 它可以允许你提取所有子控件
的ViewState值。
注意:
自定义控件的主体必须是某个html标准控件,在render(绘制)时,必须输出其type属性。这样做,
asp.net服务才能正确地识别该自定义控件,并正确的提取 postdata. 如果不这样做,asp.net服务识别
不出控件的类型,LoadPostData不能被调用。
当页面有嵌套时(例如,使用母板、iframe),上述的方法仍然会出问题,.net会丢弃自定义控件中的
子控件,这时可以过载 loadviewstate函数,在基类加载viewstate之后, 使用Page.Request.Form属性
把自己的子控件的值存储在viewstate中。
在适用母板时, 除了要重载loadpostdata以外, 还要重载
OnInit方法,在其中注册回发脚本。
protected override void OnInit(EventArgs e)
{
base.OnInit (e);
Page.RegisterRequiresPostBack( this ) ;
}
注意, 含有母板的asp.net页面的回发 , 是用$符号连接各级容器的
所以,自定义控件里的控件ID, 一定要适用 UniqueID, 否则就会找不到
loadpostdata就会找不到控件。
另外,因为使用了$ 符号, 会发生与jquery语法冲突的现象, 要尽量
避免同时使用。