1

我在显示小部件列表的页面上有一个 ListView。当用户单击列表中的一个项目时,我想显示一个ModalPopup,其中包含允许用户对他们选择的项目进行操作的控件。

我可以通过在 ListView 的 ItemTemplate 中放置一个 Panel 和一个 ModalPopupExtender 轻松完成此操作,但这意味着每个小部件都有一组隐藏控件,这会大大增加页面大小。(那里会有一些相当重量级的控件。)相反,我想为列表中的每个小部件重用一个 ModalPopup。

我已经进行了一些搜索,但我之前没有找到任何直接适用于我的情况的内容。但是,据我所知,我必须做这样的事情:

  1. 在 UpdatePanel 内的页面上放置一个 Panel 和一个 ModalPopupExtender。
  2. 构建具有属性的自定义WidgetManipulator用户控件。WidgetID将其与几个确定/取消按钮一起放入面板中。
  3. 在页面上的 Javascript 中,将单击处理程序附加到 ListView 中触发 UpdatePanel 上的回发的每个小部件。
  4. UpdatePanel_Load服务器上的事件上,显示 ModalPopup,然后将属性设置WidgetIDWidgetManipulator单击的小部件的 ID。
  5. 在服务器上的OKButton_Click事件或CancelButton_Click事件上,隐藏 ModalPopup。如果单击 OKButton,请先调用WidgetManipulator.SaveChanges()

我还没有弄清楚的部分是:我怎么知道点击了哪个小部件,以及当我刷新 UpdatePanel 时如何将它传递回服务器?这甚至是正确的方法吗?

4

2 回答 2

1

如果您可以改用 jQuery,则可以按照这两篇文章的内容做一些事情:

于 2008-11-02T17:18:50.017 回答
0

当我需要在 ASP.NET AJAX 中将数据从客户端传递到服务器时,我通常使用带有 runat="server" 的 asp:HiddenField。两者都可以自由地看到它,但要注意潜在的回发异步性。

听起来您需要通知服务器单击了小部件 - 您可以使用 Timer 回发;或者我会选择选项 5。

于 2008-10-31T00:07:38.980 回答