Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如果单击编辑或删除按钮,如何防止jQuery对话框立即关闭?_Jquery_Asp.net_Gridview - Fatal编程技术网

如果单击编辑或删除按钮,如何防止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

如果单击“添加新”按钮,将打开一个jQuery对话框,其中包含一个带有编辑和删除按钮的GridView 具有完整的代码隐藏功能。如果单击“编辑”按钮,jQuery对话框将消失。 我无法编辑

如果我再次单击“添加新”按钮,它将打开带有“更新,取消”的jQuery对话框

如果单击编辑或删除按钮,如何防止jQuery对话框立即关闭

<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”,…但问题仍然相同