我有一个带有ModalPopupExtender控件的DataList。当我点击datalist中的div显示ModalPopupExtender。
<asp:DataList ID="AdsDataList" runat="server" RepeatColumns="4"
RepeatDirection="Horizontal">
<ItemTemplate>
<div class="Detail_Content" id="detailcontact" runat="server"
onclick="return OpenPopup();">
<label><%# Eval("Name") %></label>
</div>
<asp:Panel ID="Panel2" runat="server" Style="display: none;">
<div class="popup_block" style="width: 550px;left:30%;top:100px">
<label><%# Eval("FatherCategoryName")
</div>
</asp:Panel>
<cc1:ModalPopupExtender runat="server" ID="ModalPopupExtender1"
TargetControlID="detailcontact" PopupControlID="Panel2"
PopupDragHandleControlID="header" DropShadow="false"
RepositionMode="RepositionOnWindowResizeAndScroll" X="400" Y="130"
BackgroundCssClass="modalBackground"CancelControlID="btnclose1" />
</ItemTemplate>
</asp:DataList>
我想,当用户点击后台时,隐藏ModalPopupExtender。
我使用这个jquery代码。但是找不到ModalPopupExtender。
var modalWindow = $("[id*=AdsDataList] [id*=ModalPopupExtender1]");
和
$find('#<%= AdsDataList.FindControl("ModalPopupExtender1").ClientID %>');
但得到错误
'对象引用未设置为对象的实例。'
如何使用jquery找到Datalist控件的clientID?
答案 0 :(得分:0)
您是否尝试直接获取...如果ID是唯一的..这应该适用于您的情况
var modalWindow = $("#ModalPopupExtender1]");
......
答案 1 :(得分:0)
你可以利用jQuery的兄弟选择器。
由于Panel
呈现为div
,它就在您点击的div
旁边。
function OpenPopup() {
$(this).next("div").show();
}
或者在css
和div
上添加一些panel
课程,您可以使用以下jquery
$(".divClass").click(function() {
$(this).next("div.pannelclass").show();
});
.divClass是你的{cssclass div
,而pannelclass
是你小组的cssclass。
jQuery选择器详细信息
http://api.jquery.com/next/
<ItemTemplate>
<div class="Detail_Content" id="detailcontact" runat="server" >
<label><%# Eval("Name") %></label>
</div>
<asp:Panel ID="Panel2" CssClass='panelclass' runat="server" Style="display: none;">
<div class="popup_block" style="width: 550px;left:30%;top:100px">
<label><%# Eval("FatherCategoryName")
</div>
</asp:Panel>
<cc1:ModalPopupExtender runat="server" ID="ModalPopupExtender1"
TargetControlID="detailcontact" PopupControlID="Panel2"
PopupDragHandleControlID="header" DropShadow="false"
RepositionMode="RepositionOnWindowResizeAndScroll" X="400" Y="130"
BackgroundCssClass="modalBackground"CancelControlID="btnclose1" />
</ItemTemplate>
</asp:DataList>
$(".Detail_Content").click(function(event) {
$(this).next("div.panelclass").show();
event.preventDefault()
return false;
});
隐藏模型弹出窗口的链接
http://www.codeproject.com/Articles/165083/Tips-Tricks-Hide-popup-on-background-click
http://forums.asp.net/t/1369095.aspx/1
答案 2 :(得分:0)
您应该能够通过在没有JQuery的情况下调用以下内容来找到控件。
var dataListControl = document.getElementById('<%:AdsDataList.ClientID%>')
使用JQuery
var dataListControl = $find('<%:AdsDataList.ClientID%>')
或
var dataListControl = $('<%: AdsDataList.ClientID%>')
答案 3 :(得分:0)
try this....if model id is unique
var model = $("[id$=ModalPopupExtender1]")
or if not unique then use...
OpenPopup(this) ...
function (ob)
{
var e = $(this).parent().find("div#ModalPopupExtender1");
}
答案 4 :(得分:0)
单击datalist中的任何模板时使用此代码
function (e) {
var ModalPopupExtender1= $(this).closest('tr').find('#<%=ModalPopupExtender1.ClientID %>');
e.preventDefault();
});