由下拉列表触发的AJAX ModalPopup

时间:2009-07-17 20:56:26

标签: c# asp.net javascript ajax

如果选择了下拉列表中的“删除”项目,我想通过AJAX ModalPopup显示确认对话框。

如果单击确定按钮(在确认对话框内),则应调用删除方法。

因为ModalPopup的OnOkScript属性需要一个JavaScript方法,所以显然没有直接的方法来调用服务器端方法。

我该怎么办?

我是否应该将删除方法放在隐藏按钮中,将其引用传递给javascript函数(OnOkScript),然后通过__doPostBack调用它?

有更简单的方法吗?

2 个答案:

答案 0 :(得分:0)

在OnOkScript javascript方法中,对服务器端页面执行AJAX POST以进行删除。

答案 1 :(得分:0)

您可以选择通过服务器端代码执行所有请求。

将您的标记设置为类似的内容:

<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();
}

实际上,当您在下拉列表中更改选择时,服务器会检查是否选择了“删除”。如果是这样,现在您的模态弹出窗口会显示一个实际可以从您的数据源中删除的按钮,或者执行您需要完成的任何操作。