让我们用一个简单的例子来解释这个问题:
让CC成为复合控件。
CC在viewState中存储了一个名为filter(字符串)的变量。
CC有2个静态子控件:
- searchBox:文本框
- searchButton:按钮
用户键入一个搜索词并单击searchButton。
发生以下步骤:
-
PageLoad
-
CreateChildControls:
- 创建静态子控件
- 使用筛选器请求数据库
- 创建包含结果的表,并在每行插入一个editButton(Button)和绑定处理程序到editButtons单击事件
- 在childControls层次结构中插入表
-
点击事件被触发
searchButton_click处理程序执行以下操作:
- 更新过滤器
- 重新创建子控件 这就是我被卡住的地方
我需要重新创建子控件层次结构,同时还要维护子控件的视图状态!否则,我的editButtons的Click事件将不会被触发。
有办法做到这一点吗?我一直在寻找,但找不到任何解决方案。我很乐意得到你们的帮助。
希望你理解我的问题,如果需要的话可以提问/代码说明。
向致以最良好的问候
快速
好的,我找到了一个解决方案:
诀窍是给每个editButton一个ID(string.format("editButton_{0}",i)。
如果你有更好的解决方案,请告诉我。