我正在尝试创建一个自定义控件,即“gridview”,如控件,但特别是对于实现某些自定义接口的业务对象。
在这样做时,我遇到了以下问题。
我有一个控件,我已禁用viewstate(我不想重新启用它),它有一个我想要启用viewstate的子控件。因为父母被禁用,我似乎无法让子控件上的视图状态工作。有没有人对如何使其发挥作用有任何想法?
答案 0 :(得分:7)
您无法在另一个禁用了viewstate的控件中的控件上启用viewstate。
您唯一的选择是为外部控件启用它,然后为其中的所有控件关闭它,除了您需要viewstate的控件。
任何容器上的EnableViewState属性都将覆盖该容器内所有控件的行为。
祝你好运!
修改强> 您可能需要查看 CreateChildContols()方法,并使用 EnableViewState 属性枚举控件,从而为自定义控件中的每个控件禁用viewstate。
答案 1 :(得分:0)
如果您乐意手动将数据放入ViewState(而不是让ASP.NET保留您的控件状态),您可以将项目直接放入页面的ViewState,而不是控件的ViewState
即。而不是说:
this.ViewState["someKey"] = someValue;
说:
this.Page.ViewState["someKey"] = someValue;
但请注意 - 如果您在页面上有多个控件实例,则必须确保它们使用不同的键!
答案 2 :(得分:0)
显然,Asp.Net 4.0
可以实现这一点