如何从JQuery对话框调用c#按钮事件

How call c# button event from JQuery Dialog

本文关键字:按钮 事件 调用 对话框 JQuery      更新时间:2023-09-26

这是我的先例实现:

示例.aspx中:

<asp:Button ID="rejectButton" runat="server" Text="REJECT" OnClick="OnRejectButtonClick"/>

以及在example.aspx.cs中:

protected void OnRejectButtonClick(object sender, EventArgs e)
{
    // a lot of stuff...
    rejecter();
}

这是有效的。

现在我需要一个对话框来确认拒绝。现在我的代码是:

示例.aspx中:

<asp:Button ID="rejectButton" runat="server" Text="REJECT" OnClientClick="return openDialog();"/>
<div id="dialog" title="Seleziona causa">
    <p>... bla bla...</p>
</div>
<script>
    $(function () {
        $("#dialog").dialog({ autoOpen: false, modal: true, show: "blind", hide: "blind",
            buttons: {
                "Okay": function () {
                    OnRejectButtonClick; // DOESN'T WORK!
                    $(this).dialog("close");
                },
                "Annulla": function () {
                    $(this).dialog("close");
                }
            }
        });
    });
    function openDialog() {
        $("#dialog").dialog("open");
        return false;
    }
</script>

example.aspx.cs不会更改。

但在这种更改之后,对OnRejectButtonClick事件的调用不再触发。我该怎么解决这个问题?

如果你不想使用jquery,你可以使用这个:

__doPostBack('<%= rejectButton.UniqueID %>', "");

所以你的代码是这样的:

   $(function () {
        $("#dialog").dialog({ autoOpen: false, modal: true, show: "blind", hide: "blind",
            buttons: {
                "Okay": function () {
                    __doPostBack('<%= rejectButton.UniqueID %>', "");
                    $(this).dialog("close");
                },
                "Annulla": function () {
                    $(this).dialog("close");
                }
            }
        });
    });

您需要使用jquery来调用它。

//before you click the button you should set a global variable
serverEx = true;
$("#rejectButton").click();

在您的拒绝按钮openDialogOnClientSciprt方法中

function openDialog() {
    if(serverEx)
       return true;
    $("#dialog").dialog("open");
    return false;
}

如Chris Davis所说,将ClientIDMode="Static"添加到按钮中。

你可以试试这样的东西:

__doPostBack('rejectButton','OnClick'); 

以实际执行asp.net操作。