DataGrid.CurrentPageIndex Property
.NET Framework (current version)
Gets or sets the index of the currently displayed page.
Assembly: System.Web (in System.Web.dll)
| Exception | Condition |
|---|---|
| ArgumentOutOfRangeException | The specified page index is a negative value. |
Use this property to determine the currently displayed page in the DataGrid control when paging is enabled. This property is also used to programmatically control which page is displayed.
You can also hide the built in paging controls and create custom controls. To display a specific page, set this property to the page index you want to display and then rebind the data to the DataGrid control.
The following code example demonstrates how to use the CurrentPageIndex property to programmatically control the page to display in the DataGrid control.
<%@ Page Language="VB" AutoEventWireup="True" %> <%@ Import Namespace="System.Data" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <script language="VB" runat="server"> Function CreateDataSource() As ICollection Dim dt As New DataTable() Dim dr As DataRow dt.Columns.Add(New DataColumn("IntegerValue", GetType(Int32))) dt.Columns.Add(New DataColumn("StringValue", GetType(String))) dt.Columns.Add(New DataColumn("DateTimeValue", GetType(String))) dt.Columns.Add(New DataColumn("BoolValue", GetType(Boolean))) Dim i As Integer For i = 0 To 199 dr = dt.NewRow() dr(0) = i dr(1) = "Item " + i.ToString() dr(2) = DateTime.Now.ToShortDateString() If i Mod 2 <> 0 Then dr(3) = True Else dr(3) = False End If dt.Rows.Add(dr) Next i Dim dv As New DataView(dt) Return dv End Function 'CreateDataSource Sub Page_Load(sender As Object, e As EventArgs) If chk1.Checked Then MyDataGrid.PagerStyle.Visible = True Else MyDataGrid.PagerStyle.Visible = False End If BindGrid() End Sub 'Page_Load Sub PagerButtonClick(sender As Object, e As EventArgs) ' Used by external paging UI. Dim arg As String = CType(sender, LinkButton).CommandArgument Select Case arg Case "next" If MyDataGrid.CurrentPageIndex < MyDataGrid.PageCount - 1 Then MyDataGrid.CurrentPageIndex += 1 End If Case "prev" If MyDataGrid.CurrentPageIndex > 0 Then MyDataGrid.CurrentPageIndex -= 1 End If Case "last" MyDataGrid.CurrentPageIndex = MyDataGrid.PageCount - 1 Case Else ' Page number. MyDataGrid.CurrentPageIndex = Convert.ToInt32(arg) End Select BindGrid() End Sub 'PagerButtonClick Sub MyDataGrid_Page(sender As Object, e As DataGridPageChangedEventArgs) ' Used by built-in pager. CurrentPageIndex is already set. BindGrid() End Sub 'MyDataGrid_Page Sub BindGrid() MyDataGrid.DataSource = CreateDataSource() MyDataGrid.DataBind() ShowStats() End Sub 'BindGrid Sub ShowStats() lblCurrentIndex.Text = "CurrentPageIndex is " & MyDataGrid.CurrentPageIndex lblPageCount.Text = "PageCount is " & MyDataGrid.PageCount End Sub 'ShowStats </script> <head runat="server"> <title>DataGrid Custom Paging Controls</title> </head> <body> <form id="form1" runat="server"> <h3>DataGrid Custom Paging Controls</h3> <asp:DataGrid id="MyDataGrid" AllowPaging="True" PageSize="10" OnPageIndexChanged="MyDataGrid_Page" BorderColor="black" BorderWidth="1" GridLines="Both" CellPadding="3" CellSpacing="0" Font-Names="Verdana" Font-Size="8pt" runat="server"> <PagerStyle Mode="NumericPages" HorizontalAlign="Right"> </PagerStyle> <HeaderStyle BackColor="#aaaadd"> </HeaderStyle> <AlternatingItemStyle BackColor="#eeeeee"> </AlternatingItemStyle> </asp:DataGrid> <br /> <asp:LinkButton id="btnPrev" Text="Previous page" CommandArgument="prev" ForeColor="navy" Font-Names="Verdana" Font-Size="8pt" OnClick="PagerButtonClick" runat="server"/> <asp:LinkButton id="btnNext" Text="Next page" CommandArgument="next" ForeColor="navy" Font-Names="Verdana" Font-Size="8pt" OnClick="PagerButtonClick" runat="server"/> <asp:LinkButton id="btnPage8" runat="server" Text="Go to Page 8" CommandArgument="7" ForeColor="navy" Font-Names="Verdana" Font-Size="8pt" OnClick="PagerButtonClick"/> <asp:LinkButton id="btnFirst" Text="Go to the first page" CommandArgument="0" ForeColor="navy" Font-Names="Verdana" Font-Size="8pt" OnClick="PagerButtonClick" runat="server"/> <asp:LinkButton id="btnLast" Text="Go to the last page" CommandArgument="last" ForeColor="navy" Font-Names="Verdana" Font-Size="8pt" OnClick="PagerButtonClick" runat="server"/> <br /> <asp:Checkbox id="chk1" Text="Show built-in pager" Font-Names="Verdana" Font-Size="8pt" AutoPostBack="true" runat="server"/> <br /> <table style="background-color:#eeeeee; padding:6"> <tr> <td style="display:inline"> <asp:Label id="lblCurrentIndex" runat="server" /> <br /> <asp:Label id="lblPageCount" runat="server" /> <br /> </td> </tr> </table> </form> </body> </html>
<%@ Page Language="VB" %> <%@ Import Namespace="System.Data" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <script runat="server"> Function CreateDataSource() As ICollection ' Create sample data for the DataGrid control. Dim dt As DataTable = New DataTable() Dim dr As DataRow ' Define the columns of the table. dt.Columns.Add(New DataColumn("IntegerValue", GetType(Int32))) dt.Columns.Add(New DataColumn("StringValue", GetType(String))) dt.Columns.Add(New DataColumn("CurrencyValue", GetType(Double))) ' Populate the table with sample values. Dim i As Integer For i = 0 To 100 dr = dt.NewRow() dr(0) = i dr(1) = "Item " & i.ToString() dr(2) = 1.23 * (i + 1) dt.Rows.Add(dr) Next i Dim dv As DataView = New DataView(dt) Return dv End Function Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) ' Load sample data only once, when the page is first loaded. If Not IsPostBack Then ItemsGrid.DataSource = CreateDataSource() ItemsGrid.DataBind() End If End Sub Sub Check_Change(ByVal sender As Object, ByVal e As EventArgs) ' Allow or prevent paging depending on the user's selection. ItemsGrid.AllowPaging = AllowPagingCheckBox.Checked() ' Rebind the data to refresh the DataGrid control. ItemsGrid.DataSource = CreateDataSource() ItemsGrid.DataBind() End Sub Sub Grid_Change(ByVal sender As Object, ByVal e As DataGridPageChangedEventArgs) ' For the DataGrid control to navigate to the correct page when ' paging is allowed, the CurrentPageIndex property must be updated ' programmatically. This process is usually accomplished in the ' event-handling method for the PageIndexChanged event. ' Set CurrentPageIndex to the page the user clicked. ItemsGrid.CurrentPageIndex = e.NewPageIndex ' Rebind the data to refresh the DataGrid control. ItemsGrid.DataSource = CreateDataSource() ItemsGrid.DataBind() End Sub </script> <html xmlns="http://www.w3.org/1999/xhtml" > <head id="Head2" runat="server"> <title></title> </head> <body> <form id="form1" runat="server"> <div> <h3>DataGrid AllowPaging Example</h3> <p>Select whether to allow paging in the DataGrid control.<br /> <asp:CheckBox id="AllowPagingCheckBox" Text="Allow paging" AutoPostBack="True" Checked="True" OnCheckedChanged="Check_Change" runat="server" /> </p> <hr /> <asp:Label ID="Label1" runat="server" AssociatedControlID="ItemsGrid" Font-Bold="true">Product List</asp:Label> <asp:DataGrid id="ItemsGrid" runat="server" BorderColor="Gray" BorderWidth="1" CellPadding="3" UseAccessibleHeader="true" AutoGenerateColumns="False" PageSize="10" AllowPaging="True" OnPageIndexChanged="Grid_Change"> <HeaderStyle BackColor="LightBlue" /> <Columns> <asp:BoundColumn DataField="IntegerValue" SortExpression="IntegerValue" ItemStyle-HorizontalAlign="center" HeaderText="Item" /> <asp:BoundColumn DataField="StringValue" HeaderText="Description" ItemStyle-HorizontalAlign="left" SortExpression="StringValue" /> <asp:BoundColumn DataField="CurrencyValue" HeaderText="Price" SortExpression="CurrencyValue" DataFormatString="{0:c}" /> </Columns> <ItemStyle HorizontalAlign="Right" /> </asp:DataGrid> </div> </form> </body> </html>
.NET Framework
Available since 1.1
Available since 1.1
Show: