GridView的行计数与分页

时间:2013-11-22 21:29:28

标签: asp.net gridview

所以我有GridView表的用户控件。我有更多的表比这个更大,并启用了分页,但我以此为例。我希望每个表都像这样显示,其中一行有一百行会在第一页上显示“显示:1 - 10的100”,第二页显示“显示:11 - 20的100”,等等。 p>

enter image description here 这是它现在编码的方式(在我的html文件中):

<div id="WebsiteHitsMacro">
     <umbraco:Macro ID="Macro303" Alias="WebsiteHitsControl" runat="server"></umbraco:Macro>
</div>
<div class="ui-widget-header ui-state-default ui-corner-bl ui-corner-br ui-helper clearfix bottom">
    <div class="dataTables_info" id="websitehits_info">Showing: 1-6 of 6</div>
</div>

这是ascx代码:

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
   DataSourceID="SqlDataSource1" CssClass="dataTable" AllowPaging="True" 
   AllowSorting="True">
   <AlternatingRowStyle CssClass="altrow" />
   <HeaderStyle CssClass="ui-state-default" />
   <Columns>
   <asp:BoundField DataField="id" HeaderText="id" SortExpression="id" />
   <asp:BoundField DataField="name" HeaderText="name" SortExpression="name" />
   </Columns>
</asp:GridView>

我不知道如何获得行数。是否可以将它显示在我在这里的div中?

我希望这是有道理的。感谢。

2 个答案:

答案 0 :(得分:4)

要获取网格所有页面的总行数,请使用GridView.Rows,因为它表示网格中所有数据行的集合。您可以使用该集合的Count属性,如下所示:

C#:

int totalRowsCount = GridView1.Rows.Count;

VB.NET:

Dim totalRowsCount As Integer = GridView1.Rows.Count

现在,您的问题在于,根据我发布的代码,您的用户控件不会通过页面可以使用的属性或事件公开此信息。我建议将此Showing 1-6 of 6消息放入用户控件本身,因此它具有对网格的组件级访问权限,并且可以轻松获取显示所需的信息。网格中的页脚行或位于实际网格本身正下方的标签。

答案 1 :(得分:3)

你说你的Gridview有分页。通过使用Dim cnt As Integer = Gridview1.Rows.Count,它只返回Gridview中的行数,而不是数据源已过滤的总行数。

由于您使用的是SqlDataSource,请尝试以下代码:

Protected Sub SqlDataSource1_Selected(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.SqlDataSourceStatusEvent Args) Handles
SqlDataSource1.Selected

  Dim cnt As Integer = e.AffectedRows

End Sub