我有以下包含转发器的ListView。转发器加载三个作为列的列表,三个列表中的每一个都包含另一个作为行的列表。
以下内容有效,但仅隐藏“说明”和第一个值列。我需要能够隐藏描述和所有三个值列
非常感谢任何帮助
<asp:ListView ID="ListView1"
runat="server" DataKeyNames="KeyName1">
<LayoutTemplate>
<div runat="server" id="itemPlaceholder"></div>
</LayoutTemplate>
<ItemTemplate>
<div id="div1" runat="server" class="col">
<h2>
<asp:Label runat="Server" Text='<%#Eval("ds1") %>' /></h2>
<div class="premium">
<p>Monthly premium:</p>
<p>
<asp:Label ID="lbl1" runat="Server" />
</p>
</div>
<ul id="List1">
<asp:Repeater ID="rpt1" runat="server">
<ItemTemplate>
<li>
<p>
<asp:Label ID="Label1" runat="Server" Text='<%#Eval("Description")%>' />
</p>
<p>
<asp:Label ID="Label2" runat="Server" Text='<%#Eval("Value")%>' />
</p>
</li>
</ItemTemplate>
</asp:Repeater>
</ul>
</div>
<div class="reveal">
<p><a id="show" href="javascript:show();">Show</a><a id="hide" href="javascript:hide();" style="display:none;">hides</a></p>
</div>
</div>
</ItemTemplate>
</asp:ListView>
我有以下Javascript来显示和隐藏列
window.onload = function () {
hide();
};
function show() {
var list = document.getElementById('List1').getElementsByTagName("li");
for (var i = 0; i < list.length; i++) {
if (i >= 5) {
list[i].style.display = 'block';
}
}
document.getElementById('hide').style.display = 'inline';
document.getElementById('show').style.display = 'none';
}
function hide() {
var list = document.getElementById('List1').getElementsByTagName("li");
for (var i = 0; i < list.length; i++) {
if (i >= 5) {
list[i].style.display = 'none';
}
}
答案 0 :(得分:0)
感谢wizpert的建议我使用以下代码: - )
function hide() {
var cnt = 0;
$("ul li").each(function () {
if ((cnt > 9 && cnt < 16) || (cnt > 20 && cnt < 27) || (cnt > 31 && cnt < 38)) {
$(this).hide();
}
cnt++;
});
}
我确信有更好的解决方案,好像有更多的数据加载到转发器中,或者更多的ul li标签被添加到脚本将破坏的页面中: - )