跟踪CompositeDataBoundControl中的ViewState

时间:2012-12-25 13:00:40

标签: c# asp.net custom-controls

我创建了一个CustomDataBoundControl。我实现了CreateChildControls(),但我没有积极地做任何事情来支持viewstate,因此,我在回发后丢失了数据。我正在查看这篇文章:http://msdn.microsoft.com/en-us/library/aa479016.aspx

我的问题是,示例使用ViewState的方式是使用Pair对象,该对象保存键值对并在项 IStateManager`实现的集合中重新创建已知数据类型。

我的控制更通用。我不知道进入datasource属性的对象的类型,我通过反射到datasource对象来创建子控件。我创建了一个Table控件,并用TableRow控件填充它,我用TableCell个控件填充它。

我似乎无法弥合Dino的榜样与我的现实实施之间的这种差距。

2 个答案:

答案 0 :(得分:1)

说到数据源控件,您不使用ViewState来保留数据。只要构建一个控制树,.NET框架就会重新加载控件状态下控件的视图状态。您只需要存储控件的核心属性的viewstate,以及呈现的项目数。这样,您可以重新渲染相同的控制树。

答案 1 :(得分:0)

在init上创建控制树以维护ViewState,您无需填充控件中的数据,只需创建控件即可。根据页面流,为OnInit中创建的控件启用ViewState。希望这会有所帮助。