如果单击编辑或删除按钮,如何防止jQuery对话框立即关闭?
如果单击“添加新”按钮,将打开一个jQuery对话框,其中包含一个带有编辑和删除按钮的GridView 具有完整的代码隐藏功能。如果单击“编辑”按钮,jQuery对话框将消失。 我无法编辑 如果我再次单击“添加新”按钮,它将打开带有“更新,取消”的jQuery对话框 如果单击编辑或删除按钮,如何防止jQuery对话框立即关闭如果单击编辑或删除按钮,如何防止jQuery对话框立即关闭?,jquery,asp.net,gridview,Jquery,Asp.net,Gridview,如果单击“添加新”按钮,将打开一个jQuery对话框,其中包含一个带有编辑和删除按钮的GridView 具有完整的代码隐藏功能。如果单击“编辑”按钮,jQuery对话框将消失。 我无法编辑 如果我再次单击“添加新”按钮,它将打开带有“更新,取消”的jQuery对话框 如果单击编辑或删除按钮,如何防止jQuery对话框立即关闭 <script type="text/javascript"> $("[id*=btnPopup]").live("click", function (e
<script type="text/javascript">
$("[id*=btnPopup]").live("click", function (ev) {
$("#dialog").dialog({
title: "Add new",
width: 1200,
height: 500,
modal: true,
open: function (type, data) {
$(this).parent().appendTo("form");
},
buttons: {
Close: function () {
$(this).dialog('close');
dialog.parent().appendTo(jQuery("form:first"));
}
}
});
return false;
});
</script>
.aspx file
<div id="dialog" style="display: none">
<asp:GridView ID="gridViewShowVariables" runat="server" ......>
</asp:GridView>
<div/>
<asp:Button ID="btnPopup" runat="server" Text="`enter code here`Add new item" />
$(“[id*=btnPopup]”。实时(“单击”,功能(ev){
$(“#对话框”)。对话框({
标题:“添加新”,
宽度:1200,
身高:500,
莫代尔:是的,
打开:功能(类型、数据){
$(this.parent().appendTo(“form”);
},
按钮:{
关闭:函数(){
$(this.dialog('close');
dialog.parent().appendTo(jQuery(“form:first”);
}
}
});
返回false;
});
.aspx文件
您可以使用beforeClose
事件来阻止对话框关闭
$( "#dialog" ).dialog({
beforeClose: function(){
if(error == 1){
alert('error');
return false;
}
}
});
也可以使用关闭事件:
$(function() {
$( "#dialog" ).dialog({
close: function(event,ui){
$(this).dialog('open');
}
});
});
我认为您发现了ASP.NET回发模型的一些局限性。当您单击一个按钮时,它会导致回发到服务器,这意味着页面必须完全重新发送,您将失去客户端状态。因此,您可以做的是重新打开该对话框,以便在回发后将页面发送回客户端时,该对话框将再次打开 --更新-- 首先,让我们更改声明对话框的方式
$("[id*=btnPopup]").live("click", function (ev) {
$("#dialog").dialog({
title: "Add new",
width: 1200,
height: 500,
modal: true,
autoOpen: false,
appendTo: "form",
buttons: {
Close: function () {
$(this).dialog('close');
dialog.parent().appendTo(jQuery("form:first")); //I think this can be eliminated too.
}
}
});
然后,当您要打开它时,请执行以下操作:
$("[id*=btnPopup]").live("click", function (ev) {
$("#dialog").dialog("open");
});
现在,每当您的原因导致回发时,如果您想在回发后保持对话框打开,请在服务器端执行以下操作:
ClientScriptManager.RegisterStartupScript Method (this.GetType(), "open-dialog", "$('#dialog').dialog('open');", true);
--结束更新--
或者,您可以使用UpdatePanel进行部分回发。但我不推荐这些,因为它们往往会造成比解决问题更多的问题
我的首要建议是将GridView关闭到常规表,然后使用AJAX将更新发送回服务器。在ASP.NET环境中,在大多数情况下,单击按钮将导致回发到服务器。原始问题中未提及ASP.NET。是的,我错过了标记,抱歉。但在最初的问题中,标记是纯jQuery的:)我尝试使用ScriptManager.RegisterClientScriptBlock(第页,typeof(第页),“Script”,“document.getElementById(““+panelDialogContent.ClientID+”)。style.display=“+strBlockNone+”;“,false);在gridview editmethod中没有帮助。我的div对话框位于“panelDialogContent”面板内,您刚才发布的代码会将其隐藏。您想显示它,例如:
$(“#选择器”)。对话框(“打开”)代码>@Husso-Oh,您可能还应该将其声明为documentready上的对话框,而不是在打开它时。这样,您就不必将其重新声明为对话框。当您将表单声明为对话框时,您不必将父对象附加到表单中。只需使用appendTo:“form”
选项,如他们的说明。您是指在ScriptManager.RegisterClientScriptBlock中还是在$(“#dialog”)。dialog({title:“Add new”,…。ThanksI添加了$(“#dialog”)。dialog({title:“jQuery对话框弹出窗口”,宽度:1200,高度:500,appendTo:“form”,…但问题仍然相同