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