在jQuery UI对话框中返回
本文关键字:返回 对话框 UI jQuery | 更新日期: 2023-09-27 18:25:43
我有一个包含一些行的网格视图。在每一行中,我在网格的右侧都有一个图像按钮,可以删除记录。
单击image按钮将显示一个使用jQuery UI创建的对话框。
jQuery代码为:
$("[name*='btn_check']").click(function() {
event.preventDefault();
$("#dialog-confirm").dialog({
autoOpen: true,
resizable: false,
height: 200,
modal: true,
buttons: {
"Accept": function() {
$(this).dialog("close");
},
Cancel: function() {
$(this).dialog("close");
}
}
});
});
代码对于jQueryUI对话框来说非常简单和常见。
所以,现在我想在单击"Accept"按钮时执行代码,我认为__doPostBack
可能是一个很好的解决方案。
因此,我在我的网格视图中创建了一个隐藏按钮(靠近图像按钮),然后我将此代码添加到"Accept"函数中,正如我在另一个StackOverflow问题上发现的那样:
__doPostBack('btn_hidden', '');
我也尝试过使用这个:
__doPostBack('<%= btn_hidden.UniqueID %>', '');
但没有成功。
那么,执行回发的正确方法是什么?我如何发送记录的ID来删除带有代码的记录?
首先,您应该在ImageButton
上设置正确的CommandName
和CommandArgument
。然后从OnClientClick
调用对话框。据我所知,你只有一个对话框元素隐藏在某个地方,所以ID应该没有问题:
<asp:ImageButton runat="server"
CommandName="Delete"
CommandArgument='<%# Eval("YourKeyFieldNameHere") %>'
OnCommand="ImageButton_Command"
OnClientClick="javascript:return showConfirmDialog(this.name)"
/>
function showConfirmDialog(uniqueId) {
$("#dialog-confirm").dialog({
autoOpen: true,
resizable: false,
height: 200,
modal: true,
buttons: {
"Accept": function() {
$(this).dialog("close");
__doPostBack(uniqueId, '');
},
Cancel: function() {
$(this).dialog("close");
}
}
});
return false; // this is to prevent default click handler to cause a postback
}
编码背后:
protected void ImageButton_Command(object sender, CommandEventArgs e)
{
// e.CommandArgument will contain the record key and
// e.CommandName will be equal to "Delete" or whatever you'll set on aspx
}