【问题标题】:jquery dialog calls a server side method with button parametersjquery 对话框使用按钮参数调用服务器端方法
【发布时间】:2011-02-24 21:07:53
【问题描述】:

我有一个 gridview 控件,为网格的每一行删除 asp:ImageButton。我想要的是当用户单击删除按钮询问他们是否确定要删除它时弹出一个 jquery 对话框。
到目前为止,我的对话框很好,我在该对话框上有按钮,我可以让按钮调用服务器端方法,但它让对话框知道用户选择的行的 ID,然后将其传递给服务器端代码。

页面行中的按钮当前只是一个 id 为“dialog_link”的“a”标签。页面上的jquery是这样的:

$("button").button();
    $("#DeleteButton").click(function () {
        $.ajax({
            type: "POST",
            url: "ManageUsers.aspx/DeleteUser",
            data: "{}",
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function (msg) {

                // Replace the div's content with the page method's return.
                $("#DeleteButton").text(msg.d);
            }
        });
    });

    // Dialog           
    $('#dialog').dialog({
        autoOpen: false,
        width: 400,
        modal: true,
        bgiframe: true

    });

    // Dialog Link
    $('#dialog_link').click(function () {
        $('#dialog').dialog('open');
        return false;
    });


对话框本身只是一组“div”标签。 我想过很多不同的方法(参数传递、会话变量等),但不知道如何让它们中的任何一个工作。 欢迎任何想法

与往常一样,提前感谢那些做出贡献的人。

【问题讨论】:

    标签: asp.net jquery server-side parameter-passing


    【解决方案1】:

    我最近在工作中做了完全相同的事情 - 确认删除项目。我通过使用 Data http://docs.jquery.com/Data 方法来存储我想要传递的值来解决它。

    例如,我的删除链接有以下内容:

    <a href="#" class="delete" id="1">Delete</a>
    

    然后监视所有对“删除”类的点击,当这种情况发生时,在对话框中设置数据:

    $("#dialog").data("id", $(this).attr("id"));
    

    当您在对话框中时,您可以访问它。

    $("#dialog-confirm").dialog({
            resizable: false,
            height:140,
            modal: true,
            buttons: {
                'Delete': function() {
                    alert($(this).data('id'));
                    $(this).dialog('close');
                },
                Cancel: function() {
                    $(this).dialog('close');
                }
            }
        });
    

    希望这有帮助,如果不清楚,请大声疾呼。

    【讨论】:

    • 感谢 Alistair 的快速回复,我现在真的很接近了,我想我现在需要的只是能够将参数传递给服务器端方法。在我的 AJAX 方法中,我使用它来注册方法 url:“ManageUsers.aspx/DeleteUser”。我尝试拆分字符串以尝试将参数放入其中“ManageUsers.aspx/DeleteUser(" + $(this).data('id') +")” 但无济于事。关于如何完成最后一块拼图的任何想法?
    • $.ajax( { data: $(this).data('id'), complete: /*so on so on*/ });
    • 感谢古佐夫特。好的,在阅读了有关此内容的更多信息后,我看到参数作为查询字符串传回。由于服务器端方法是静态的,我如何访问查询字符串对象?
    • 请问有什么线索吗?还是不知道怎么访问服务端代码中发送的数据……
    • 不用担心,现在可以正常工作了,谢谢。完全是我添加到 ajax 调用的数据部分的方式。将其更改为 "{\"id\":\"" + $(this).data('title') + "\"}" 现在可以使用了:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-29
    • 2016-01-31
    • 1970-01-01
    • 2023-03-25
    相关资源
    最近更新 更多