我基本上想要显示一个带有确认或取消选项的对话框。
确认应允许部分回发,否则不应取消。我尝试过使用触发器并按照建议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
,但断点没有触发。
答案 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。希望有所帮助!