DataGrid.AllowPaging Property
Gets or sets a value that indicates whether paging is enabled.
Assembly: System.Web (in System.Web.dll)
Property Value
Type: System.Booleantrue if paging is enabled; otherwise, false. The default value is false.
Paging allows you to display the contents of the DataGrid control in page segments. The number of items on a page is determined by the PageSize property. If no value is specified for the PageSize property, the DataGrid control will display 10 items on a page.
By default, paging is disabled. To enable paging, set this property to true and provide code to handle the PageIndexChanged event.
The typical logic for the PageIndexChanged event is to set the CurrentPageIndex property to the index of the page you want to display and then use the DataBind method to bind the data to the DataGrid control.
Note |
|---|
The event handler receives a DataGridPageChangedEventArgs object as a parameter. You can use the NewPageIndex property of this parameter to determine the index of the page selected by the user from the page selection elements of the DataGrid control. |
With standard paging, the DataGrid control assumes that the data source contains all the items to be displayed. The DataGrid control calculates the indexes of the items on the displayed page based on the page index, specified by the CurrentPageIndex property, and the number of items of items on a page, specified by the PageSize property.
Normally, a data source that contains all items to be displayed is loaded every time the DataGrid control is paged. This can consume a lot of resources when the data source is very large. Custom paging allows you to load just the segment of data needed to display a single page. For additional information on custom paging, see the AllowCustomPaging property.
The following code example demonstrates how to use the AllowPaging property to enable paging.
<%@ 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"> Dim Cart As DataTable Dim CartView As DAtaView 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("CurrencyValue", GetType(Double))) Dim i As Integer For i = 0 To 99 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 New DataView(dt) Return dv End Function 'CreateDataSource Sub Page_Load(sender As Object, e As EventArgs) If Not IsPostBack Then ' Need to load this data only once. ItemsGrid.DataSource = CreateDataSource() ItemsGrid.DataBind() End If If CheckBox1.Checked Then ItemsGrid.PagerStyle.Mode = PagerMode.NumericPages Else ItemsGrid.PagerStyle.Mode = PagerMode.NextPrev End If End Sub 'Page_Load Sub Grid_Change(sender As Object, e As DataGridPageChangedEventArgs) ' Set CurrentPageIndex to the page the user clicked. ItemsGrid.CurrentPageIndex = e.NewPageIndex ' Rebind the data. ItemsGrid.DataSource = CreateDataSource() ItemsGrid.DataBind() End Sub 'Grid_Change </script> <head runat="server"> <title>DataGrid Paging Example</title> </head> <body> <form id="form1" runat="server"> <h3>DataGrid Paging Example</h3> <asp:DataGrid id="ItemsGrid" runat="server" BorderColor="black" BorderWidth="1" CellPadding="3" AllowPaging="true" AutoGenerateColumns="false" OnPageIndexChanged="Grid_Change"> <HeaderStyle BackColor="#00aaaa"> </HeaderStyle> <PagerStyle Mode="NextPrev"> </PagerStyle> <Columns> <asp:BoundColumn HeaderText="Number" DataField="IntegerValue"/> <asp:BoundColumn HeaderText="Item" DataField="StringValue"/> <asp:BoundColumn HeaderText="Price" DataField="CurrencyValue" DataFormatString="{0:c}"> <ItemStyle HorizontalAlign="right"> </ItemStyle> </asp:BoundColumn> </Columns> </asp:DataGrid> <br /> <asp:CheckBox id="CheckBox1" Text="Show page navigation" AutoPostBack="true" runat="server"/> </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>
Available since 1.1
