我在显示小部件列表的页面上有一个 ListView。当用户单击列表中的一个项目时,我想显示一个ModalPopup,其中包含允许用户对他们选择的项目进行操作的控件。
我可以通过在 ListView 的 ItemTemplate 中放置一个 Panel 和一个 ModalPopupExtender 轻松完成此操作,但这意味着每个小部件都有一组隐藏控件,这会大大增加页面大小。(那里会有一些相当重量级的控件。)相反,我想为列表中的每个小部件重用一个 ModalPopup。
我已经进行了一些搜索,但我之前没有找到任何直接适用于我的情况的内容。但是,据我所知,我必须做这样的事情:
- 在 UpdatePanel 内的页面上放置一个 Panel 和一个 ModalPopupExtender。
- 构建具有属性的自定义
WidgetManipulator
用户控件。WidgetID
将其与几个确定/取消按钮一起放入面板中。 - 在页面上的 Javascript 中,将单击处理程序附加到 ListView 中触发 UpdatePanel 上的回发的每个小部件。
- 在
UpdatePanel_Load
服务器上的事件上,显示 ModalPopup,然后将属性设置WidgetID
为WidgetManipulator
单击的小部件的 ID。 - 在服务器上的
OKButton_Click
事件或CancelButton_Click
事件上,隐藏 ModalPopup。如果单击 OKButton,请先调用WidgetManipulator.SaveChanges()
。
我还没有弄清楚的部分是:我怎么知道点击了哪个小部件,以及当我刷新 UpdatePanel 时如何将它传递回服务器?这甚至是正确的方法吗?