Freigeben über


DataGrid.AllowCustomPaging Eigenschaft

Definition

Dient zum Abrufen oder Festlegen eines Werts, der angibt, ob benutzerdefinierte Paging aktiviert ist.

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

Eigenschaftswert

truewenn benutzerdefinierte Paging aktiviert ist; andernfalls . false Der Standardwert ist false.

Beispiele

Im folgenden Codebeispiel wird die Verwendung der Eigenschaft zum Aktivieren der AllowCustomPaging benutzerdefinierten Paging veranschaulicht.

<%@ 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>

Hinweise

Mithilfe der Seitenverwaltung können Sie den Inhalt des DataGrid Steuerelements in Seitensegmenten anzeigen. Die Anzahl der Elemente auf einer Seite wird durch die PageSize Eigenschaft bestimmt. Wenn für die PageSize Eigenschaft kein Wert angegeben ist, DataGrid werden 10 Elemente auf einer Seite angezeigt.

Normalerweise wird eine Datenquelle, die jede Zeile im DataGrid Steuerelement enthält, jedes Mal geladen, wenn das DataGrid Steuerelement zu einer anderen Seite wechselt. Dies kann viele Ressourcen verbrauchen, wenn die Datenquelle sehr groß ist. Mit benutzerdefiniertem Paging können Sie nur das Segment der Daten laden, das zum Anzeigen einer einzelnen Seite erforderlich ist.

Um benutzerdefinierte Seitenverwaltung zu aktivieren, legen Sie sowohl die Eigenschaften als auch die AllowPaging Eigenschaften auf true.AllowCustomPaging Stellen Sie als Nächstes Code zum Behandeln des PageIndexChanged Ereignisses bereit.

Die typische Logik für den PageIndexChanged Ereignishandler besteht darin, die CurrentPageIndex Eigenschaft zuerst auf den Index der Seite festzulegen, die Sie anzeigen möchten.

Hinweis

Der Ereignishandler empfängt ein DataGridPageChangedEventArgs Objekt als Parameter. Sie können die NewPageIndex Eigenschaft dieses Parameters verwenden, um den Index der vom Benutzer ausgewählten Seite aus den Seitenauswahlelementen des DataGrid Steuerelements zu bestimmen.

Erstellen Sie als Nächstes eine Datenquelle, die die Daten enthält, die auf einer einzelnen Seite angezeigt werden sollen, und verwenden Sie dann die DataBind Methode, um die Daten an das DataGrid Steuerelement zu binden.

Hinweis

Da nur ein Segment der Daten geladen wird, müssen Sie die VirtualItemCount Eigenschaft auf die Gesamtanzahl der Elemente im DataGrid Steuerelement festlegen. Auf diese Weise kann das Steuerelement die Gesamtanzahl der Seiten ermitteln, die zum Anzeigen jedes Elements im DataGrid Steuerelement erforderlich sind. Diese Eigenschaft wird normalerweise programmgesteuert festgelegt, sobald die Gesamtanzahl der Elemente im DataGrid Steuerelement bestimmt wird.

Wenn die Auslagerung mit der AllowCustomPaging Eigenschaft aktiviert falseist, geht das DataGrid Steuerelement davon aus, dass die Datenquelle alle anzuzeigenden Elemente enthält. Das DataGrid Steuerelement berechnet die Indizes der Elemente auf der angezeigten Seite basierend auf dem Seitenindex, der durch die CurrentPageIndex Eigenschaft angegeben wird, und der Anzahl der Elemente auf einer Seite, die von der PageSize Eigenschaft angegeben wird.

Wenn die AllowCustomPaging Eigenschaft auf true festgelegt ist, geht das DataGrid Steuerelement davon aus, dass die Datenquelle nur die Elemente enthält, die durch die VirtualItemCount Eigenschaft bestimmt werden. Alle Elemente bis zur Anzahl der von der PageSize Eigenschaft angegebenen Elemente werden angezeigt.

Gilt für:

Weitere Informationen