计算ListView中具有分页的所有已检查CheckBox

时间:2011-02-11 06:26:09

标签: c# asp.net vb.net listview checkbox

我想同时接受C#和VB.NET建议。

我有一个简单的ListView和DataPager,如下所示:

<asp:ListView ID="lvStudent" runat="server">
    <LayoutTemplate>
        <table id="TimeSheet" cellspacing="1" class="tablesorter">
            <thead>
                <tr>

                <th>
                ID#
                </th>

                    <th>
                        <asp:LinkButton ID="lnkByName" runat="server">Name</asp:LinkButton>
                    </th>
                     <th>
                         <asp:CheckBox ID="selectAll" runat="server" OnClick="selectAll(this)"/>
                     </th>         

                </tr>
            </thead>
            <tbody>
                <tr id="itemPlaceholder" runat="server" />
            </tbody>
        </table>
    </LayoutTemplate>
    <ItemTemplate>
        <tr>
        <td class="id">
        <%#Eval("Id")%>
        </td>

            <td>
                <%#Eval("Name")%>
                <asp:HiddenField ID="hfId" runat="server" Value='<%#Eval("Id")%>' />
            </td>

            <td>
                <asp:CheckBox ID="cbSelected" runat="server"/>
                </td>             
    </ItemTemplate>
</asp:ListView>


<div>
    <asp:DataPager ID="dpReport" runat="server" 
    PagedControlID="lvStudent" PageSize="20">
    <Fields>
        <asp:NextPreviousPagerField ShowFirstPageButton="True" ShowNextPageButton="False"  />
        <asp:NumericPagerField NumericButtonCssClass="dpTimeSheet" ButtonCount="50" ButtonType="Link"  />
        <asp:NextPreviousPagerField ShowLastPageButton="True" ShowPreviousPageButton="False"  />
    </Fields>
</asp:DataPager>
</div>

如果没有分页,我可以像这样获得所有选中的CheckBox:

Public Function CountSelectedCheckBox() As Integer

    Dim count As Integer = 0
    Dim s As String

    For Each i As ListViewDataItem In lvStudent.Items

        Dim cb = CType(i.FindControl("cbSelected"), CheckBox)

        If cb.Checked Then
            count = count + 1
        End If
    Next

    Return count

End Function

但是,如何计算ListView中具有分页功能的所有已检查CheckBox?

1 个答案:

答案 0 :(得分:0)

我实现了类似你的功能。 尝试在session或ViewState中保存checkedIds。 当然,您需要为每个请求更新checkedIds。