在UpdatePanel中的按钮上使用javascript确认对话框 - 回发整页

时间:2011-03-31 15:31:27

标签: javascript asp.net updatepanel

我基本上想要显示一个带有确认或取消选项的对话框。

确认应允许部分回发,否则不应取消。我尝试过使用触发器并按照建议here调用__doPostBack(),但它会回发整页而不仅仅是面板。

$('#buttonInUpdatePanel').live('click', function (event) {
    event.preventDefault();
    var item = this;
    var title = 'Confirm';
    var msg = 'Please confirm something';

    var $dialog = $("<div id='myDialog'></div>")
        .html(msg)
        .dialog({
            modal: true,
            buttons: {
                "Confirm": function () {
                    $(this).dialog("close");
         __doPostBack('Button1', null); //tried this and .submit() on the button
                    //return true;
                },
                "Cancel": function () {
                    $(this).dialog("close");
                    //return false;
                }
            },
            title: title
        });
});

我的UpdatePanel:

<asp:UpdatePanel ID="UpdatePanel2" UpdateMode="Conditional" runat="server">
    <ContentTemplate>
        <asp:TextBox runat="server" ID="TextBox1" />
        <asp:Button 
            ID="Button1" 
            Text="Add" 
            OnClick="AddExtraVehicle_Click" 
            runat="server" />
    </ContentTemplate>
    <Triggers>
        <asp:AsyncPostBackTrigger ControlID="Button1" EventName="Click" />
    </Triggers>
</asp:UpdatePanel>

更新:

我已更改doPostBack以立即使用按钮ID并注释掉返回的true和false行。

单击按钮时,它会调用确认对话框,但是当您单击确认时,它似乎什么都不做。我期待调用方法AddExtraVehicle_Click,但断点没有触发。

1 个答案:

答案 0 :(得分:1)

更新:这个

 __doPostBack('Button1', null)

不起作用。当ASP.NET呈现Button1时,ID实际上不是“Button1”。它被更改为包含其命名的id。你需要这样做

 __doPostBack($('input[id$=Button1]').attr("id"), null); //You need to use the real ID of the button which this statement will do

你在正确的轨道上,但略微偏离道路:)。试试这段代码

var $dialog = $("<div id='myDialog'></div>")
        .html(msg)
        .dialog({
            modal: true,
            buttons: {
                "Confirm": function () {
                    $(this).dialog("close");
         __doPostBack($('input[id$=Button1']).attr("id"), null); //tried this and .submit() on the button
                    return true;
                },
                "Cancel": function () {
                    $(this).dialog("close");
                    return false;
                }
            },
            title: title
        });
});

基本上,您希望使用已注册为更新面板的异步触发器的控件的Id调用__doPostBack。希望有所帮助!