我创建了一个CustomDataBoundControl
。我实现了CreateChildControls()
,但我没有积极地做任何事情来支持viewstate,因此,我在回发后丢失了数据。我正在查看这篇文章:http://msdn.microsoft.com/en-us/library/aa479016.aspx
我的问题是,示例使用ViewState的方式是使用Pair
对象,该对象保存键值对并在项 IStateManager`实现的集合中重新创建已知数据类型。
我的控制更通用。我不知道进入datasource
属性的对象的类型,我通过反射到datasource
对象来创建子控件。我创建了一个Table
控件,并用TableRow
控件填充它,我用TableCell
个控件填充它。
我似乎无法弥合Dino的榜样与我的现实实施之间的这种差距。
答案 0 :(得分:1)
说到数据源控件,您不使用ViewState来保留数据。只要构建一个控制树,.NET框架就会重新加载控件状态下控件的视图状态。您只需要存储控件的核心属性的viewstate,以及呈现的项目数。这样,您可以重新渲染相同的控制树。
答案 1 :(得分:0)
在init上创建控制树以维护ViewState,您无需填充控件中的数据,只需创建控件即可。根据页面流,为OnInit中创建的控件启用ViewState。希望这会有所帮助。