如何关闭放置在TemplateField中的modalpopupextender而不使用BehaviorID属性
How to close modalpopupextender placed in a TemplateField without using the BehaviorID property
我需要使用如下所示的确认框问题是,我还需要添加一个关闭x按钮在标题栏,但我通常使用的方式来关闭一个模态弹出不会工作。我认为这是因为行为学id必须是唯一的,因为它是在一个ItemTemplate内,ASP将尝试创建多个ModalPopupExtender具有相同的行为学id。
<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>
长话短说,你知道我怎么能关闭模态弹出窗口,如果我不能使用行为学id为此目的吗??我知道这可以很容易地解决使用jQuery,但我就是不允许使用它。
提前感谢。
您可以从代码后面获得正确的模式弹出式扩展器的id
。
首先,从你的模式弹出式扩展器中移除BehaviorId
属性。
<cc1:ModalPopupExtender ID="mpe" runat="server" PopupControlID="pnlPopup" TargetControlID="lnkDelete"
OkControlID="btnYes" CancelControlID="btnNo" BackgroundCssClass="modalBackground">
</cc1:ModalPopupExtender>
第二,通过给id
和runat="server"
,使关闭弹出的链接成为服务器控件。
<div class="header">
Confirmation <a id="linkClose" runat="server" href="javascript:;" title="Cerrar"> X
</a>
</div>
第三,使用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"
最后,ClosePopup
js函数
<script type="text/javascript">
function ClosePopup(id) {
$find(id).hide();
}
</script>
因此,作为第一行的一个例子,一旦呈现,链接将看起来像这样,onclick
属性设置为正确的模式弹出式扩展器id。
<a id="GridView1_linkClose_0" onclick="ClosePopup('GridView1_mpe_0');" title="Cerrar" href="javascript:;" tabindex="0"> X </a>
不确定这是否是最简单的解决方案,但这是我过去做过的类似的事情。
相关文章:
- RegEx删除空属性?例如,如果(class=“”||class=“”)移除;否则就下课
- 全局变量和全局对象的属性之间有什么区别吗
- 如果使用 lodash 将属性存在于另一个对象中,则向对象添加属性
- 如何在Bootstrap Modal中为动态点击生成的变量设置jade属性
- 序列化数据属性中对象的最可靠方法
- 分析高度属性时出现意外值{{specs.height}}.index.html
- TypeError:无法读取属性'推'未定义的JavaScript
- 同样,同样的错误'ahorcado.js:26未捕获类型错误:无法读取属性'beginPath'
- AngularJS-使用'true'属性
- 可以't使用JavaScript获取width属性
- 未捕获的TypeError无法读取未定义的属性socialsharing
- 如何使用javascript获取嵌套对象中所有子对象的单个属性
- JavaScript Pub/Sub属性访问问题
- 从JavaScript访问struts操作中的属性
- 是否可以从父类访问子类的属性
- 如何更改reactjs中外部/独立组件的状态或属性
- 如何在选项卡上定义属性'的主窗口对象
- 锚点元素的href属性自动更改
- jQuery最近父级的数据属性选择器
- 如何关闭放置在TemplateField中的modalpopupextender而不使用BehaviorID属性