jQuery模式对话框和ASP.NET回发

时间:2014-02-20 16:46:21

标签: javascript jquery asp.net ajax

我的页面上有一个模式对话框,使用jQuery,用户输入密码。

这是一个标准的jQuery对话框,它工作正常。我在数据网格中有链接按钮,使用以下代码打开对话框:

        $('.needsVal').click(function () {
            $("#login1").dialog('open');
            id = $(this).attr('id');
            return false;
        });

问题出现在我进行Ajax调用的页面中,并且基于返回的值,我想有选择地为页面触发回发。问题是回发永远不会发生。我的回发代码如下:

        if (returnValue == "true") {
            WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(id, "", false, "", "", false, true));
            return true;
        }
        else {
            alert("Authentication failure!\nPlease check your password and try again.");
            return false;

出于某种原因,我无法使用模态对话框进行回发,这让我感到疯狂。我有一个常规的Javascript提示符,但我不得不更改它,因为在提示符中无法屏蔽密码。

关于如何让回发工作的任何想法?

id是一个全局变量,具有单击按钮的唯一ID。我已经证实这是正确的。

1 个答案:

答案 0 :(得分:0)

我设法让这个工作。

我发现页面上有两个ASP.NET控件 - 两个gridviews,一个带有常规链接按钮,另一个带有linkColumn。

由于链接按钮在两种类型的控件(linkbutton与commandbutton)中的工作方式,我不得不改变我打开表单的方式,以及我如何与提示进行交互。我不得不创造两个不同的事件。 (也许有办法用一个,但我无法弄明白)

我最终结识了jQuery明智之处:

//Click event for gridview 1 (standard linkbutton)
$('.needsVal').click(function () {
                $("#login1").dialog('open');
                id = $(this).attr('id');
                return false;
            });

//Click event for second gridview (command button)
            $('.needsValSideMenu').click(function () {
                var h = $(this).html();
                script = h.substring(h.indexOf("\"") + 1, h.indexOf("\">"));
                $("#login2").dialog('open');
                return false;
            });

//AJAX call for standard linkbutton grid
function checkPassword() {
            var returnValue;
            $.ajax({
                async: false,
                type: "POST",
                url: "myservice.asmx/Authenticate",
                data: { "password": pw.value },
                dataType: "xml",
                error: function () { alert("Unexpected Error!"); },
                success: function (msg) {
                    returnValue = $(msg).find('boolean').text()
                }
            });
            if (returnValue == "true") {
                //alert(id.replace("_", "$"));
                id = id.split("_").join("$");                
                WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(id.replace("_","$"), "", true, "", "", false, true));
            }
            else {
                alert("Authentication failure!\nPlease check your password and try again.");
            }
        }

//Call for second grid (command button) - need to get and execute the script associated with this button
        function checkPasswordSideMenu() {
            var returnValue;
            $.ajax({
                async: false,
                type: "POST",
                url: "myservice.asmx/Authenticate",
                data: { "password": pw2.value },
                dataType: "xml",
                error: function () { alert("Unexpected Error!"); },
                success: function (msg) {
                    returnValue = $(msg).find('boolean').text()
                }
            });
            if (returnValue == "true") {
                eval(script);
            }
            else {
                alert("Authentication failure!\nPlease check your password and try again.");
            }
        }

我无法想到在一种方法中执行此操作的方法,因为我需要根据单击的按钮类型调用不同的checkPassword例程。