Поделиться через


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.SelectedIndexChangedDropDownList элемента управления. Код в обработчике задает 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, который назначается SelectMethod свойству ObjectDataSource элемента управления. В примере также содержится метод с именем GetEmployeeCount, который назначается SelectCountMethod свойству ObjectDataSource элемента управления. Класс использует 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свойств StartRowIndexParameterNameMaximumRowsParameterNameи SelectCountMethod свойств ObjectDataSource метода выбора в бизнес-объекте с соответствующими параметрами. EnablePaging Если для свойства задано trueзначение, SelectParameters коллекция включает два дополнительных параметра для первой строки, запрашиваемой и количество запрошенных строк. Эти два параметра называются определенными свойствами и MaximumRowsParameterName свойствамиStartRowIndexParameterName. Метод Select должен возвращать запрошенный номер строк, начиная с указанного индекса. Так как данные могут не распределяться равномерно по размеру страницы, последняя страница может содержать меньше строк. Таким образом, количество запрошенных строк на самом деле является максимальным числом возвращаемых строк.

Если разбиение по страницам в связанном элементе управления с привязкой к данным, элемент управления вызывает Select метод с начальным индексом и количеством необходимых строк. Кроме того, если SelectCountMethod свойство задано, элемент управления с привязкой к данным вызывает метод перед отрисовкой элементов управления пейджером. Например, если GridView элемент управления включает разбиение на страницы размером 5, а метод, заданный SelectCountMethod свойством, возвращает 20, в пейджере отображаются только 4 страницы.

Свойство EnablePaging делегирует EnablePaging свойству ObjectDataSourceView объекта.

Применяется к

См. также раздел