我的页面中有一个转发器,带有一些前置条件,例如复选框列表和列表框,用于指示转发器的数据源带来的内容。单击一个按钮,将对转发器进行数据绑定,该转发器工作正常。但是,如果用户决定要添加其他内容或删除某些内容,则可以选中/取消选中某些字段,然后再次点击该按钮将重新绑定转发器并更改显示的内容,但是转发器中所有当前控件的视图状态将失去。
在初始化事件中绑定转发器是不可能的,因为在页面生命周期中的那一点,checkboxlist / listbox值的ViewState不可用,并且为了将参数作为参数传递到我的数据源中,需要这些值。中继器。
我有什么选择来维持转发器控件的状态?
答案 0 :(得分:1)
转发器控件绑定完全重新创建转发器模板中的所有子控件。因为新的DataBind结果可能(或可能不)在转发器内包含极其不同的数据。 你希望在中继器内保持什么样的控制和状态?也许使用序数html控件并通过Request.Form集合与他们一起操作会更好吗?
如果您想在应用新数据绑定之前保存来自转发器的数据,那么制作它的最佳位置是Page.PreRender事件。在这种情况下,所有页面控件都已重新创建,其视图状态已经恢复。因此,您可以通过Repeater.Items集合进行迭代,并逐行从转发器中保存数据。保存所有数据后,您可以根据页面中的当前过滤器值重新绑定转发器控件。