在Listview中显示在asp转发器中隐藏行 - 仅隐藏第一列

时间:2014-08-01 13:45:14

标签: javascript asp.net listview asprepeater

我有以下包含转发器的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';
        }
    }

1 个答案:

答案 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标签被添加到脚本将破坏的页面中: - )