jquery对话框调用带按钮参数的服务器端方法
问题描述:
我有一个gridview控件,并为网格的每一行删除了asp:ImageButton。我想要的是当用户点击删除按钮时,弹出一个jquery对话框,询问他们是否确定要删除它。
到目前为止,我的对话框出现的很好,我得到了该对话框上的按钮,并且我可以使按钮调用服务器端方法,但它使对话框知道用户选择的行的ID,然后传递该对话框到服务器端的代码。
页面行中的按钮目前只是一个ID为'dialog_link'的'a'标签。在页面上了jQuery看起来是这样的: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”的标签。 我想到了很多不同的方法来做到这一点(参数传递,会话变量等),但无法弄清楚如何让它们中的任何一个工作。 任何想法是最受欢迎的
一如既往,在此先感谢那些贡献者。
答
我最近做了一些完全相同的工作 - 删除项目的确认。我通过使用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')+“)”但唉,无济于事。关于如何实现最后一块难题的任何想法? – Chiefy 2010-05-27 22:38:31
'$ .ajax({data:$(this).data('id'),complete:/ * so on on//});' – Gutzofter 2010-05-28 01:38:14
Thanks Gutzofter。好吧,在阅读了更多关于这个之后,我看到参数作为查询字符串传回。由于服务器端方法是静态的,我如何访问查询字符串对象? – Chiefy 2010-05-28 09:08:40