Javascript 模式弹出窗口';如果在模式中放置的gridview中关闭而不取消行编辑,则不会再次打开

Javascript 模式弹出窗口';如果在模式中放置的gridview中关闭而不取消行编辑,则不会再次打开,javascript,jquery,asp.net,gridview,modalpopupextender,Javascript,Jquery,Asp.net,Gridview,Modalpopupextender,我有一个就地编辑的gridview。此gridview放置在模式pop扩展器中。 一切正常,但如果我编辑一行,输入不符合验证规则的数据,然后关闭模式弹出窗口,模式将不会再次打开 我尝试过不同的方法,比如链接和触发点击事件,但似乎没有任何效果。 最后,我还尝试在javascript函数中启动cancel edit关闭模式,但问题仍然存在 以下是我的代码的简化版本: JS 如往常一样,任何帮助都将不胜感激 提前谢谢 另外,这里有一个我的简化版的完整链接。隐藏或显示模式弹出扩展程序仍然将模式弹出程序保

我有一个就地编辑的gridview。此gridview放置在模式pop扩展器中。 一切正常,但如果我编辑一行,输入不符合验证规则的数据,然后关闭模式弹出窗口,模式将不会再次打开

我尝试过不同的方法,比如链接和触发点击事件,但似乎没有任何效果。 最后,我还尝试在javascript函数中启动cancel edit关闭模式,但问题仍然存在

以下是我的代码的简化版本:

JS

如往常一样,任何帮助都将不胜感激

提前谢谢


另外,这里有一个我的简化版的完整链接。

隐藏或显示模式弹出扩展程序仍然将模式弹出程序保存在内存中(在页面中),因此验证仍然会阻止回发(当您尝试正常保存或取消时会发生什么情况),除非您通过Javascript关闭它(我认为)

因此,我认为弹出窗口不再打开的原因是,在后台,模态验证仍然失败,因此不允许再次显示其自身

您是否尝试过在取消按钮上使用
CausesValidation=false

致以最良好的祝愿

<script src="script/jquery-1.10.2.min.js" type="text/javascript"></script>
    <script language="javascript" type="text/javascript">
        function CerrarPopup(strMpeCliente) {

            // Find the Generated Cancel Button for the Row in Edit Mode.
            var cancelButton = $('#<%= GridView2.ClientID %>')
                               .find('a')
                               .filter(function() { return $(this).text() === "Cancelar" });

            // If Cancel Button is found, then show message and click the Cancel Button.
            if (cancelButton != null && cancelButton.length > 0) {
                buttonClick(cancelButton[0]);

            }
            var modalPopupBehavior = $find(strMpeCliente);
            modalPopupBehavior.hide();

        }
        function buttonClick(button) {
            button.click();
        }    
    </script>
<cc1:ToolkitScriptManager ID="ToolkitScriptManager1" runat="server">
</cc1:ToolkitScriptManager>
<asp:UpdatePanel ID="upnlPagos" UpdateMode="Conditional" runat="server">
    <ContentTemplate>
        <asp:GridView ID="GridView1" HeaderStyle-BackColor="#3AC0F2" HeaderStyle-ForeColor="White"
            runat="server" AutoGenerateColumns="false">
            <Columns>
                <asp:BoundField DataField="Id" HeaderText="Id" ItemStyle-Width="30" />
                <asp:BoundField DataField="Name" HeaderText="Name" ItemStyle-Width="150" />
                <asp:TemplateField>
                    <ItemTemplate>
                        <asp:ImageButton ID="btnViewDetails" CommandArgument='<%# Eval("Id") %>'
                            OnClick="View" runat="server" />
                    </ItemTemplate>
                </asp:TemplateField>
            </Columns>
        </asp:GridView>
        <asp:LinkButton Text="" ID="lnkFake" runat="server" />
        <cc1:ModalPopupExtender ID="mpe" runat="server" PopupControlID="pnlPopup" TargetControlID="lnkFake"
            CancelControlID="btnClose" BackgroundCssClass="modalBackground" BehaviorID="mpeDetalles">
        </cc1:ModalPopupExtender>
        <asp:Panel ID="pnlPopup" runat="server" CssClass="modalPopup" Style="display: none">
            <div class="header">
                Details <a class="dvCerrar" href="javascript:;" onclick="CerrarPopup('mpeDetalles');"
                    title="Cerrar">&nbsp;&nbsp;X&nbsp;&nbsp; </a>
            </div>
            <div class="body">
                <asp:GridView ID="GridView2" HeaderStyle-BackColor="#3AC0F2" HeaderStyle-ForeColor="White"
                    runat="server" AutoGenerateColumns="false" OnRowEditing="gvPrueba_RowEditing"
                    OnRowUpdating="gvPrueba_RowUpdating" OnRowCancelingEdit="gvPrueba_RowCancelingEdit">
                    <Columns>
                        <asp:BoundField DataField="Id" HeaderText="Id" ItemStyle-Width="30" />
                        <asp:BoundField DataField="Name" HeaderText="Name" ItemStyle-Width="150" />
                        <asp:TemplateField>
                            <ItemTemplate>
                                <asp:Label ID="lblCorreo" runat="server" Text='<%# Eval("Email")%>'></asp:Label>
                            </ItemTemplate>
                            <EditItemTemplate>
                                <asp:TextBox ID="txtCorreo" runat="server" Text='<%# Eval("Email")%>' MaxLength="70"
                                    Width="180px"></asp:TextBox>
                                <asp:RegularExpressionValidator ID="revtxtCorreo" runat="server" ControlToValidate="txtCorreo"
                                    ErrorMessage="" ValidationExpression="^\s*([\w\.\-]+)@([\w\-]+)((\.(\w){2,3})+)\s*$"
                                    Display="Dynamic" ForeColor="Red" ToolTip="Formato de correo incorrecto">*</asp:RegularExpressionValidator>
                            </EditItemTemplate>
                        </asp:TemplateField>
                        <asp:CommandField HeaderText="Editar" ButtonType="Link" ShowEditButton="true" ShowCancelButton="true"
                            CancelText="Cancelar" EditText="Editar" UpdateText="Guardar"></asp:CommandField>
                    </Columns>
                </asp:GridView>
            </div>
            <div class="footer" align="right">
                <asp:Button ID="btnClose" runat="server" Text="Close" CssClass="button" 
                    onclick="btnClose_Click" />
            </div>
        </asp:Panel>
    </ContentTemplate>
</asp:UpdatePanel>
 protected void Page_Load(object sender, EventArgs e)
        {
            if (!this.IsPostBack)
            {
                DataTable dt = new DataTable();
                dt.Columns.AddRange(new DataColumn[5] { new DataColumn("Id", typeof(int)),
                        new DataColumn("Name", typeof(string)),
                        new DataColumn("Country",typeof(string)),
            new DataColumn("City",typeof(string)),
            new DataColumn("Phone",typeof(int))});
                dt.Rows.Add(1, "John Hammond", "United States", "Lasvagas", 1234567899);
                dt.Rows.Add(2, "Mudassar Khan", "India", "Mumbai", 1234567899);
                dt.Rows.Add(3, "Suzanne Mathews", "France", "Paris", 1234567899);
                dt.Rows.Add(4, "Robert Schidner", "Russia", "Mascow", 1234567899);
                GridView1.DataSource = dt;
                GridView1.DataBind();
                ViewState["Table"] = dt;




                //DETALLE

                DataTable dtDetalle = new DataTable();
                dtDetalle.Columns.AddRange(new DataColumn[3] { new DataColumn("Id", typeof(int)),
                        new DataColumn("Name", typeof(string)),
                        new DataColumn("Email",typeof(string))});          

                dtDetalle.Rows.Add(1, "John Hammond", "jj@siempresof.tom");
                dtDetalle.Rows.Add(2, "Mudassar Khan", "aj@siempresof.tom");
                dtDetalle.Rows.Add(3, "Suzanne Mathews", "eej@siempresof.tom");
                dtDetalle.Rows.Add(4, "Robert Schidner", "tttj@siempresof.tom");
                ViewState["tbDetalle"] = dtDetalle;
            }
        }
        protected void gvPrueba_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
        {
            GridView2.EditIndex = -1;
            FillGrid();


        }
        protected void gvPrueba_RowEditing(object sender, GridViewEditEventArgs e)
        {
            GridView2.EditIndex = e.NewEditIndex;
            FillGrid();

        }
        protected void gvPrueba_RowUpdating(object sender, GridViewUpdateEventArgs e)
        {   
            GridView2.EditIndex = -1;
        }
        protected void View(object sender, EventArgs e)
        {

            FillGrid();
        }
        private void FillGrid()
        {
            DataTable dt = (DataTable)ViewState["tbDetalle"];            
            GridView2.DataSource = dt;
            GridView2.DataBind();
            mpe.Show();
        }    

        protected void btnClose_Click(object sender, EventArgs e)
        {
            GridView2.EditIndex = -1;
            mpe.Hide();
        }