ObjectDataSource.EnablePaging Свойство
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Возвращает или задает значение, указывающее, поддерживает ли элемент управления источником данных разбиение по страницам извлекаемого им набора данных.
public:
property bool EnablePaging { bool get(); void set(bool value); };
public bool EnablePaging { get; set; }
member this.EnablePaging : bool with get, set
Public Property EnablePaging As Boolean
Значение свойства
Значение true
, если элемент управления источником данных поддерживает разбиение по страницам извлекаемых им данных; в противном случае — значение false
.
Примеры
В следующих трех примерах показана веб-страница, класс страницы с кодом программной части и класс доступа к данным, которые позволяют пользователю выбрать количество записей, отображаемых на странице.
Веб-страница содержит элемент управления, ObjectDataSource свойство которого EnablePaging имеет значение true
. Свойству SelectCountMethod присваивается имя метода, возвращающего общее количество записей в запросе. Свойствам MaximumRowsParameterName и свойству StartRowIndexParameterName присваиваются имена параметров, используемых в методе Select. Страница также содержит DropDownList элемент управления .
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>ObjectDataSource Example</title>
</head>
<body>
<form id="form1" runat="server">
<div>
How many rows to display on this page:<br />
<asp:DropDownList
AutoPostBack="true"
ID="rowsToDisplay"
runat="server"
onselectedindexchanged="rowsToDisplay_SelectedIndexChanged">
<asp:ListItem Value="5"></asp:ListItem>
<asp:ListItem Value="10" Selected="True"></asp:ListItem>
<asp:ListItem Value="20"></asp:ListItem>
</asp:DropDownList>
<asp:ObjectDataSource
SelectCountMethod="GetEmployeeCount"
EnablePaging="true"
TypeName="CustomerLogic"
SelectMethod="GetSubsetOfEmployees"
MaximumRowsParameterName="maxRows"
StartRowIndexParameterName="startRows"
ID="ObjectDataSource1"
runat="server">
</asp:ObjectDataSource>
<asp:GridView
DataSourceID="ObjectDataSource1"
AllowPaging="true"
ID="GridView1"
runat="server">
</asp:GridView>
</div>
</form>
</body>
</html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<div>
How many rows to display on this page:<br />
<asp:DropDownList
AutoPostBack="true"
ID="rowsToDisplay"
runat="server"
onselectedindexchanged="rowsToDisplay_SelectedIndexChanged">
<asp:ListItem Value="5"></asp:ListItem>
<asp:ListItem Value="10" Selected="True"></asp:ListItem>
<asp:ListItem Value="20"></asp:ListItem>
</asp:DropDownList>
<asp:ObjectDataSource
SelectCountMethod="GetEmployeeCount"
EnablePaging="true"
TypeName="CustomerLogic"
SelectMethod="GetSubsetOfEmployees"
MaximumRowsParameterName="maxRows"
StartRowIndexParameterName="startRows"
ID="ObjectDataSource1"
runat="server">
</asp:ObjectDataSource>
<asp:GridView
DataSourceID="ObjectDataSource1"
AllowPaging="true"
ID="GridView1"
runat="server">
</asp:GridView>
</div>
</form>
</body>
</html>
Во втором примере показан обработчик для ListControl.SelectedIndexChanged события DropDownList элемента управления . Код в обработчике задает PageSize для свойства выбор пользователя.
protected void rowsToDisplay_SelectedIndexChanged(object sender, EventArgs e)
{
GridView1.PageSize = int.Parse(rowsToDisplay.SelectedValue);
}
Protected Sub rowsToDisplay_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles rowsToDisplay.SelectedIndexChanged
GridView1.PageSize = Integer.Parse(rowsToDisplay.SelectedValue)
End Sub
В третьем примере показан класс доступа к данным, который получает данные из таблицы Customers. Он включает метод с именем GetSubsetOfEmployees
, который назначается свойству SelectMethodObjectDataSource элемента управления . Пример также включает метод с именем GetEmployeeCount
, который назначается свойству SelectCountMethodObjectDataSource элемента управления . Класс использует LINQ для запроса таблицы Customers. Для этого примера требуется класс LINQ to SQL, представляющий базу данных Northwind и таблицу Customers. Дополнительные сведения см. в разделе Практическое руководство. Создание классов LINQ to SQL в веб-проекте.
public class CustomerLogic
{
public List<Customer> GetSubsetOfEmployees(int startRows, int maxRows)
{
NorthwindDataContext ndc = new NorthwindDataContext();
var customerQuery =
from c in ndc.Customers
select c;
return customerQuery.Skip(startRows).Take(maxRows).ToList<Customer>();
}
public int GetEmployeeCount()
{
object cachedCount = HttpRuntime.Cache["TotalEmployeeCount"];
if (cachedCount != null)
{
return int.Parse(cachedCount.ToString());
}
else
{
NorthwindDataContext ndc = new NorthwindDataContext();
var totalNumberQuery =
from c in ndc.Customers
select c;
int employeeCount = totalNumberQuery.Count();
HttpRuntime.Cache.Add("TotalEmployeeCount", employeeCount, null, DateTime.Now.AddMinutes(5), Cache.NoSlidingExpiration, CacheItemPriority.Normal, null);
return employeeCount;
}
}
}
Public Class CustomerLogic
Public Function GetSubsetOfEmployees(ByVal startRows As Integer, ByVal maxRows As Integer) As List(Of Customer)
Dim ndc As New NorthwindDataContext()
Dim customerQuery = _
From c In ndc.Customers _
Select c
Return customerQuery.Skip(startRows).Take(maxRows).ToList()
End Function
Public Function GetEmployeeCount() As Integer
Dim cachedCount = HttpRuntime.Cache("TotalEmployeeCount")
If cachedCount IsNot Nothing Then
Return Integer.Parse(cachedCount.ToString())
Else
Dim ndc As New NorthwindDataContext()
Dim totalNumberQuery = _
From c In ndc.Customers _
Select c
Dim employeeCount = totalNumberQuery.Count()
HttpRuntime.Cache.Add("TotalEmployeeCount", employeeCount, Nothing, DateTime.Now.AddMinutes(5), Cache.NoSlidingExpiration, CacheItemPriority.Normal, Nothing)
Return employeeCount
End If
End Function
End Class
Комментарии
Разбиение на страницы ObjectDataSource элементом управления обрабатывается путем задания EnablePagingсвойств ObjectDataSource , StartRowIndexParameterNameMaximumRowsParameterName, и SelectCountMethod объекта и определения метода select в бизнес-объекте с соответствующими параметрами. Если свойству EnablePaging присвоено значение true
, SelectParameters коллекция включает два дополнительных параметра для первой запрашиваемой строки и количество запрошенных строк. Имена этих двух параметров определяются свойствами StartRowIndexParameterName и MaximumRowsParameterName . Метод Select
должен возвращать требуемое количество строк, начиная с указанного индекса. Так как данные могут не делить равномерно на размер страницы, последняя страница может содержать меньше строк. Таким образом, количество запрашиваемых строк фактически равно максимальному числу возвращаемых строк.
Если для связанного элемента управления с привязкой к данным включена разбиение по страницам, элемент управления с привязкой к данным вызывает Select
метод с начальным индексом и необходимым количеством строк. Кроме того, если SelectCountMethod свойство задано, элемент управления с привязкой к данным вызывает метод перед отрисовкой элементов управления пейджера. Например, если в элементе GridView управления включена разбиение по страницам с размером страницы 5, а метод, заданный свойством SelectCountMethod , возвращает значение 20, на пейджере отображается только 4 страницы.
Свойство EnablePaging делегирует EnablePaging свойство ObjectDataSourceView объекта .