DataGrid.AllowCustomPaging Eigenschaft
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Ruft einen Wert ab, der angibt, ob die benutzerdefinierte Paginierung aktiviert ist, oder legt diesen fest.
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
true
, wenn benutzerdefiniertes Paging aktiviert ist, andernfalls false
. Der Standardwert ist false
.
Beispiele
Im folgenden Codebeispiel wird veranschaulicht, wie die AllowCustomPaging -Eigenschaft verwendet wird, um benutzerdefiniertes Paging zu aktivieren.
<%@ 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
Mit paging können Sie den Inhalt des Steuerelements DataGrid in Seitensegmenten anzeigen. Die Anzahl der Elemente auf einer Seite wird durch die PageSize -Eigenschaft bestimmt. Wenn kein Wert für die PageSize -Eigenschaft angegeben wird, DataGrid werden 10 Elemente auf einer Seite angezeigt.
Normalerweise wird bei jedem Wechsel des Steuerelements zu einer anderen Seite eine Datenquelle geladen, die DataGridDataGrid jede Zeile im Steuerelement enthält. Dies kann viele Ressourcen beanspruchen, wenn die Datenquelle sehr groß ist. Mit benutzerdefiniertem Paging können Sie nur das Datensegment laden, das zum Anzeigen einer einzelnen Seite erforderlich ist.
Um benutzerdefiniertes Paging zu aktivieren, legen Sie sowohl die AllowPaging Eigenschaften als AllowCustomPaging auch auf fest true
. Geben Sie als Nächstes Code zum Behandeln des Ereignisses PageIndexChanged an.
Die typische Logik für den PageIndexChanged Ereignishandler besteht darin, zuerst die CurrentPageIndex -Eigenschaft 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 Seite zu bestimmen, die vom Benutzer aus den Seitenauswahlelementen des DataGrid Steuerelements ausgewählt wurde.
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. Dadurch kann das Steuerelement die Gesamtanzahl der Seiten bestimmen, 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 ist.
Wenn paging aktiviert ist und die AllowCustomPaging -Eigenschaft auf false
festgelegt ist, 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 durch die 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 von der VirtualItemCount -Eigenschaft bestimmt werden. Alle Elemente bis zur Anzahl von Elementen, die von der PageSize -Eigenschaft angegeben werden, werden angezeigt.