在jQuery UI对话框中返回

本文关键字:返回 对话框 UI jQuery | 更新日期: 2023-09-27 18:25:43

我有一个包含一些行的网格视图。在每一行中,我在网格的右侧都有一个图像按钮,可以删除记录。

单击image按钮将显示一个使用jQuery UI创建的对话框。

jQuery代码为:

$("[name*='btn_check']").click(function() {
    event.preventDefault();
    $("#dialog-confirm").dialog({
        autoOpen: true,
        resizable: false,
        height: 200,
        modal: true,
        buttons: {
            "Accept": function() {
                $(this).dialog("close");
            },
            Cancel: function() {
                $(this).dialog("close");
            }
        }
    });
});

代码对于jQueryUI对话框来说非常简单和常见。

所以,现在我想在单击"Accept"按钮时执行代码,我认为__doPostBack可能是一个很好的解决方案。

因此,我在我的网格视图中创建了一个隐藏按钮(靠近图像按钮),然后我将此代码添加到"Accept"函数中,正如我在另一个StackOverflow问题上发现的那样:

__doPostBack('btn_hidden', '');

我也尝试过使用这个:

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

但没有成功。

那么,执行回发的正确方法是什么?我如何发送记录的ID来删除带有代码的记录?

在jQuery UI对话框中返回

首先,您应该在ImageButton上设置正确的CommandNameCommandArgument。然后从OnClientClick调用对话框。据我所知,你只有一个对话框元素隐藏在某个地方,所以ID应该没有问题:

<asp:ImageButton runat="server"
    CommandName="Delete" 
    CommandArgument='<%# Eval("YourKeyFieldNameHere") %>'
    OnCommand="ImageButton_Command"
    OnClientClick="javascript:return showConfirmDialog(this.name)"
/>
function showConfirmDialog(uniqueId) {
    $("#dialog-confirm").dialog({
        autoOpen: true,
        resizable: false,
        height: 200,
        modal: true,
        buttons: {
            "Accept": function() {
                $(this).dialog("close");
                __doPostBack(uniqueId, '');
            },
            Cancel: function() {
                $(this).dialog("close");
            }
        }
    });
    return false; // this is to prevent default click handler to cause a postback
}

编码背后:

protected void ImageButton_Command(object sender, CommandEventArgs e) 
{
    // e.CommandArgument will contain the record key and 
    // e.CommandName will be equal to "Delete" or whatever you'll set on aspx
}