Javascript 如何在不使用BehaviorID属性的情况下关闭放置在TemplateField中的ModalPopupXtender

Javascript 如何在不使用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"

我需要使用一个像这样的确认框 问题是,我还需要在标题栏中添加一个关闭X按钮,但我通常用于关闭模式弹出窗口的方式不起作用。我认为这是因为BehaviorID必须是唯一的,而且由于它位于ItemTemplate中,ASP将尝试使用相同的BehaviorID创建多个ModalPopupXtender

<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">
                                    &nbsp;&nbsp;X&nbsp;&nbsp; </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>