DataGrid.AllowCustomPaging DataGrid.AllowCustomPaging DataGrid.AllowCustomPaging DataGrid.AllowCustomPaging Property

定義

カスタム ページングを有効にするかどうかを示す値を取得または設定します。Gets or sets a value that indicates whether custom paging is enabled.

public:
 virtual property bool AllowCustomPaging { bool get(); void set(bool value); };
public virtual bool AllowCustomPaging { get; set; }
member this.AllowCustomPaging : bool with get, set
Public Overridable Property AllowCustomPaging As Boolean

プロパティ値

カスタム ページングが有効な場合は true。それ以外の場合は falsetrue if custom paging is enabled; otherwise, false. 既定値は false です。The default value is false.

次のコード例は、プロパティを使用AllowCustomPagingしてカスタムページングを有効にする方法を示しています。The following code example demonstrates how to use the AllowCustomPaging property to enable custom paging.

<%@ Page Language="C#" 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 runat="server">

      // Normally, an entire data source is loaded in the DataGrid control, 
      // which can take up a lot of resources. This example uses custom 
      // paging, which loads only the segment of data needed to fill a
      // single page. In order to query for the appropriate segment of
      // data, the index of the first item displayed on a page must be
      // tracked as the user navigates between pages.
      int startIndex = 0;

      ICollection CreateDataSource() 
      {

         // Create sample data for the DataGrid control.
         DataTable dt = new DataTable();
         DataRow dr;

         // Define the columns of the table.
         dt.Columns.Add(new DataColumn("IntegerValue", typeof(Int32)));
         dt.Columns.Add(new DataColumn("StringValue", typeof(string)));
         dt.Columns.Add(new DataColumn("DateTimeValue", typeof(string)));
         dt.Columns.Add(new DataColumn("BoolValue", typeof(bool)));

         // Populate the table with sample values. When using custom paging,
         // a query should only return enough data to fill a single page, 
         // beginning at the start index.
         for (int i = startIndex; i < (startIndex + MyDataGrid.PageSize); i++) 
         {
             dr = dt.NewRow();

             dr[0] = i;
             dr[1] = "Item " + i.ToString();
             dr[2] = DateTime.Now.ToShortDateString();
             dr[3] = (i % 2 != 0) ? true : false;

             dt.Rows.Add(dr);
         }

         DataView dv = new DataView(dt);
         return dv;

      }

      void Page_Load(Object sender, EventArgs e) 
      {

         // Load sample data only once, when the page is first loaded.
         if (!IsPostBack) 
         {

            // Set the virtual item count, which specifies the total number
            // items displayed in the DataGrid control when custom paging
            // is used.
            MyDataGrid.VirtualItemCount = 200;

            // Retrieve the segment of data to display on the page from the
            // data source and bind it to the DataGrid control.
            BindGrid();

         }

      }

      void MyDataGrid_Page(Object sender, DataGridPageChangedEventArgs e) 
      {

         // 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.
         MyDataGrid.CurrentPageIndex = e.NewPageIndex;

         // Calculate the index of the first item to display on the page 
         // using the current page index and the page size.
         startIndex = MyDataGrid.CurrentPageIndex * MyDataGrid.PageSize;

         // Retrieve the segment of data to display on the page from the 
         // data source and bind it to the DataGrid control.
         BindGrid();

      }

      void BindGrid() 
      {

         MyDataGrid.DataSource = CreateDataSource();
         MyDataGrid.DataBind();

      }

   </script>

<head runat="server">
    <title> DataGrid Custom Paging Example </title>
</head>
<body>

   <form id="form1" runat="server">
 
      <h3> DataGrid Custom Paging Example </h3>

      <asp:DataGrid id="MyDataGrid" 
           AllowCustomPaging="True" 
           AllowPaging="True" 
           PageSize="10" 
           OnPageIndexChanged="MyDataGrid_Page" 
           runat="server">

         <HeaderStyle BackColor="Navy" 
                      ForeColor="White" 
                      Font-Bold="True" />

         <PagerStyle Mode="NumericPages" 
                     HorizontalAlign="Right" />

      </asp:DataGrid>

   </form>

</body>
</html>

<%@ 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 runat="server">

      ' Normally, an entire data source is loaded in the DataGrid control, 
      ' which can take up a lot of resources. This example uses custom 
      ' paging, which loads only the segment of data needed to fill a
      ' single page. In order to query for the appropriate segment of
      ' data, the index of the first item displayed on a page must be
      ' tracked as the user navigates between pages.
      Dim startIndex As Integer = 0

      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("DateTimeValue", GetType(String)))
         dt.Columns.Add(New DataColumn("BoolValue", GetType(Boolean)))

         ' Populate the table with sample values. When using custom paging,
         ' a query should only return enough data to fill a single page, 
         ' beginning at the start index.
         Dim i As Integer         

         For i = startIndex To ((startIndex + MyDataGrid.PageSize) - 1) 

             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 DataView = New DataView(dt)
         Return dv

      End Function

      Sub Page_Load(sender As Object, e As EventArgs) 

         ' Load sample data only once, when the page is first loaded.
         If Not IsPostBack Then 

            ' Set the virtual item count, which specifies the total number
            ' items displayed in the DataGrid control when custom paging
            ' is used.
            MyDataGrid.VirtualItemCount = 200

            ' Retrieve the segment of data to display on the page from the 
            ' data source and bind it to the DataGrid control.
            BindGrid()

         End If

      End Sub

      Sub MyDataGrid_Page(sender as Object, 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.
         MyDataGrid.CurrentPageIndex = e.NewPageIndex

         ' Calculate the index of the first item to display on the page 
         ' using the current page index and the page size.
         startIndex = MyDataGrid.CurrentPageIndex * MyDataGrid.PageSize

         ' Retrieve the segment of data to display on the page from the 
         ' data source and bind it to the DataGrid control.
         BindGrid()

      End Sub

      Sub BindGrid() 

         MyDataGrid.DataSource = CreateDataSource()
         MyDataGrid.DataBind()

      End Sub

   </script>

<head runat="server">
    <title> DataGrid Custom Paging Example </title>
</head>
<body>

   <form id="form1" runat="server">
 
      <h3> DataGrid Custom Paging Example </h3>

      <asp:DataGrid id="MyDataGrid" 
           AllowCustomPaging="True" 
           AllowPaging="True" 
           PageSize="10" 
           OnPageIndexChanged="MyDataGrid_Page" 
           runat="server">

         <HeaderStyle BackColor="Navy" 
                      ForeColor="White" 
                      Font-Bold="True" />

         <PagerStyle Mode="NumericPages" 
                     HorizontalAlign="Right" />

      </asp:DataGrid>

   </form>

</body>
</html>

注釈

ページングを使用すると、 DataGridコントロールの内容をページセグメントに表示できます。Paging allows you to display the contents of the DataGrid control in page segments. ページ上の項目の数は、 PageSizeプロパティによって決定されます。The number of items on a page is determined by the PageSize property. PageSizeプロパティに値が指定されていないDataGrid場合、はページに10個の項目を表示します。If no value is specified for the PageSize property, the DataGrid will display 10 items on a page.

通常、コントロールのすべての行DataGridを含むデータソースは、 DataGridコントロールが別のページに移動するたびに読み込まれます。Normally, a data source that contains every row in the DataGrid control is loaded every time the DataGrid control moves to a different page. これにより、データソースが非常に大きい場合に多くのリソースが消費される可能性があります。This can consume a lot of resources when the data source is very large. カスタムページングを使用すると、1つのページを表示するために必要なデータのセグメントだけを読み込むことができます。Custom paging allows you to load just the segment of data needed to display a single page.

カスタムページングを有効にするにはAllowPagingAllowCustomPagingプロパティとtrueプロパティの両方をに設定します。To enable custom paging, set both the AllowPaging and AllowCustomPaging properties to true. 次に、 PageIndexChangedイベントを処理するコードを指定します。Next, provide code to handle the PageIndexChanged event.

PageIndexChangedイベントハンドラーの一般的なロジックでは、最初にCurrentPageIndexプロパティを表示するページのインデックスに設定します。The typical logic for the PageIndexChanged event handler is to first set the CurrentPageIndex property to the index of the page you want to display.

注意

イベントハンドラーは、パラメーター DataGridPageChangedEventArgsとしてオブジェクトを受け取ります。The event handler receives a DataGridPageChangedEventArgs object as a parameter. このパラメーターのNewPageIndexプロパティを使用して、 DataGridコントロールのページ選択要素からユーザーが選択したページのインデックスを確認できます。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.

次に、1つのページに表示するデータを含むデータソースを作成し、 DataBindメソッドを使用してデータをDataGridコントロールにバインドします。Next, create a data source that contains the data to display on a single page and then use the DataBind method to bind the data to the DataGrid control.

注意

データのセグメントのみが読み込まれるため、 VirtualItemCountプロパティをDataGridコントロール内の項目の合計数に設定する必要があります。Because only a segment of the data is loaded, you must set the VirtualItemCount property to the total number of items in the DataGrid control. これにより、コントロールは、 DataGridコントロール内のすべての項目を表示するために必要なページの合計数を決定できます。This allows the control to determine the total number of pages needed to display every item in the DataGrid control. このプロパティは、通常、 DataGridコントロール内の項目の合計数が決定されるとプログラムによって設定されます。This property is normally programmatically set once the total number of items in the DataGrid control is determined.

AllowCustomPagingプロパティがにfalse設定された状態でページングが有効DataGridになっている場合、コントロールは、表示されるすべての項目がデータソースに含まれることを前提としています。When paging is enabled with the AllowCustomPaging property is set to false, the DataGrid control assumes that the data source contains all the items to be displayed. コントロールDataGridは、プロパティで指定CurrentPageIndexされたページインデックス、およびPageSizeプロパティによって指定されたページ上の項目数に基づいて、表示されるページ上の項目のインデックスを計算します。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 on a page, specified by the PageSize property.

プロパティがにtrue設定されているDataGrid場合、コントロールは、 VirtualItemCountプロパティによって決定された項目のみがデータソースに含まれることを前提としています。 AllowCustomPagingWhen the AllowCustomPaging property is set to true, the DataGrid control assumes that the data source only contains the items as determined by the VirtualItemCount property. PageSizeプロパティによって指定された項目数までのすべての項目が表示されます。All items up to the number of items specified by the PageSize property are displayed.

適用対象

こちらもご覧ください