Javascript 如何在不使用BehaviorID属性的情况下关闭放置在TemplateField中的ModalPopupXtender
我需要使用一个像这样的确认框 问题是,我还需要在标题栏中添加一个关闭X按钮,但我通常用于关闭模式弹出窗口的方式不起作用。我认为这是因为BehaviorID必须是唯一的,而且由于它位于ItemTemplate中,ASP将尝试使用相同的BehaviorID创建多个ModalPopupXtenderJavascript 如何在不使用BehaviorID属性的情况下关闭放置在TemplateField中的ModalPopupXtender,javascript,asp.net,ajaxcontroltoolkit,Javascript,Asp.net,Ajaxcontroltoolkit,我需要使用一个像这样的确认框 问题是,我还需要在标题栏中添加一个关闭X按钮,但我通常用于关闭模式弹出窗口的方式不起作用。我认为这是因为BehaviorID必须是唯一的,而且由于它位于ItemTemplate中,ASP将尝试使用相同的BehaviorID创建多个ModalPopupXtender <asp:GridView ID="GridView1" HeaderStyle-BackColor="#3AC0F2" HeaderStyle-ForeColor="White"
<asp:GridView ID="GridView1" HeaderStyle-BackColor="#3AC0F2" HeaderStyle-ForeColor="White"
RowStyle-BackColor="#A1DCF2" AlternatingRowStyle-BackColor="White" AlternatingRowStyle-ForeColor="#000"
runat="server" AutoGenerateColumns="false">
<Columns>
<asp:BoundField DataField="Name" HeaderText="Name" ItemStyle-Width="150" />
<asp:BoundField DataField="Country" HeaderText="Country" ItemStyle-Width="150" />
<asp:TemplateField>
<ItemTemplate>
<asp:LinkButton ID="lnkDelete" CommandArgument='<%# Eval("Id") %>' OnClick="DeleteRecord"
runat="server" Text="Delete"></asp:LinkButton>
<cc1:ConfirmButtonExtender ID="cbe" runat="server" DisplayModalPopupID="mpe" TargetControlID="lnkDelete">
</cc1:ConfirmButtonExtender>
<cc1:ModalPopupExtender ID="mpe" runat="server" PopupControlID="pnlPopup" TargetControlID="lnkDelete"
OkControlID="btnYes" CancelControlID="btnNo" BackgroundCssClass="modalBackground"
BehaviorID="mpeClosePopup">
</cc1:ModalPopupExtender>
<asp:Panel ID="pnlPopup" runat="server" CssClass="modalPopup" Style="display: none">
<div class="header">
Confirmation <a href="javascript:;" onclick="ClosePopup('mpeClosePopup');" title="Cerrar">
X </a>
</div>
<div class="body">
Do you want to delete this record?
</div>
<div class="footer" align="right">
<asp:Button ID="btnYes" runat="server" Text="Yes" CssClass="yes" />
<asp:Button ID="btnNo" runat="server" Text="No" CssClass="no" />
</div>
</asp:Panel>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
长话短说,你知道如果我不能使用BehaviorID,我如何关闭模态弹出窗口吗??我知道使用jQuery可以很容易地解决这个问题,但我不允许使用它
提前谢谢 您可以从后面的代码中获得模式弹出扩展程序的正确id
首先,从模式弹出扩展程序中删除BehaviorId属性
<cc1:ModalPopupExtender ID="mpe" runat="server" PopupControlID="pnlPopup" TargetControlID="lnkDelete"
OkControlID="btnYes" CancelControlID="btnNo" BackgroundCssClass="modalBackground">
</cc1:ModalPopupExtender>
<a id="GridView1_linkClose_0" onclick="ClosePopup('GridView1_mpe_0');" title="Cerrar" href="javascript:;" tabindex="0"> X </a>
第三,通过使用GridView的RowDataBound事件,基于网格视图中每一行的mpe的ClientID为linkClose设置onclick
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
HtmlAnchor linkClose = (HtmlAnchor)e.Row.FindControl("linkClose");
linkClose.Attributes.Add("onclick", string.Format("ClosePopup('{0}');", e.Row.FindControl("mpe").ClientID));
}
}
第四,将GridView控件上的OnRowDataBound设置为与上面定义的名称相同的名称
OnRowDataBound="GridView1_RowDataBound"
最后,关闭弹出窗口js函数
<script type="text/javascript">
function ClosePopup(id) {
$find(id).hide();
}
</script>
不确定这是否是最简单的解决方案,但这是我过去类似的做法
<a id="GridView1_linkClose_0" onclick="ClosePopup('GridView1_mpe_0');" title="Cerrar" href="javascript:;" tabindex="0"> X </a>