【问题标题】:AJAX ModalPopup triggered by dropdownlist下拉列表触发的 AJAX ModalPopup
【发布时间】:2009-07-17 20:56:25
【问题描述】:
如果选择了下拉列表中的“删除”项,我想通过 AJAX ModalPopup 显示一个确认对话框。
如果单击确定按钮(在确认对话框内),则应调用删除方法。
因为 ModalPopup 的 OnOkScript 属性需要一个 JavaScript 方法,所以显然没有直接调用服务端方法的方法。
我该怎么办?
我是否应该将删除方法放在隐藏按钮中,将其引用传递给 javascript 函数(OnOkScript),然后通过 __doPostBack 调用它?
有没有更简单的方法?
【问题讨论】:
标签:
c#
asp.net
javascript
ajax
【解决方案1】:
在您的 OnOkScript javascript 方法中,向服务器端页面执行 AJAX POST 以执行删除。
【解决方案2】:
您可以选择通过服务器端代码执行所有请求。
将您的标记设置为类似的:
<asp:DropDownList
AutoPostBack="true"
OnSelectedIndexChanged="ConfirmDelete_SelectedIndexChanged"
runat="server" />
<asp:LinkButton
ID="btnNotInUse"
runat="server" />
<asp:Panel
ID="pnlPopup"
style="display:none;"
runat="server">
This is your confirmation dialog.<br />
<asp:Button ID="btnDelete" runat="server" />
</asp:Panel>
<ajaxToolkit:ModalPopupExtender
ID="mpeModal"
TargetControlID="btnNotInUse"
PopupControlID="pnlPopup"
runat="server" />
现在,当您的 DropDownList 发生变化时,您将触发服务器事件“ConfirmDelete_SelectedIndexChanged”,如下所示:
protected void ConfirmDelete_SelectedIndexChanged(object sender, EventArgs e)
{
if(/*some logic that states if "delete" is selected*/)
mpeModal.Show();
}
实际上,当您更改下拉列表中的选择时,服务器会检查是否选择了“删除”。如果是这样,您的模态弹出窗口现在会显示一个按钮,该按钮实际上可以从您的数据源中删除或执行您需要完成的任何操作。