ObjectDataSource.EnablePaging Propiedad
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Obtiene o establece un valor que indica si el control de origen de datos admite la paginación en el conjunto de datos recuperado.
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
Valor de propiedad
Es true
si el control de origen de datos admite la paginación a través de los datos que recupera; de lo contrario, es false
.
Ejemplos
En los tres ejemplos siguientes se muestra una página web, una clase de página de código subyacente y una clase de acceso a datos que permite al usuario elegir cuántos registros se muestran en la página.
La página web contiene un ObjectDataSource control cuya EnablePaging propiedad está establecida en true
. La SelectCountMethod propiedad se establece en el nombre de un método que devuelve el número total de registros de la consulta. La MaximumRowsParameterName propiedad y la StartRowIndexParameterName propiedad se establecen en los nombres de los parámetros que se usan en el método Select. La página también contiene un DropDownList control .
<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>
En el segundo ejemplo se muestra un controlador para el ListControl.SelectedIndexChanged evento del DropDownList control. El código del controlador establece la PageSize propiedad en la selección del usuario.
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
En el tercer ejemplo se muestra la clase de acceso a datos que recupera datos de la tabla Customers. Incluye un método denominado GetSubsetOfEmployees
, que se asigna a la SelectMethod propiedad del ObjectDataSource control . En el ejemplo también se incluye un método denominado GetEmployeeCount
, que se asigna a la SelectCountMethod propiedad del ObjectDataSource control . La clase usa LINQ para consultar la tabla Customers. El ejemplo requiere una clase LINQ to SQL que represente la tabla Northwind Database y Customers. Para obtener más información, vea How to: Create LINQ to SQL Classes in a Web Project.
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
Comentarios
La paginación por parte del ObjectDataSource control se controla estableciendo las EnablePagingpropiedades , StartRowIndexParameterName, MaximumRowsParameterNamey SelectCountMethod de ObjectDataSource y definiendo un método select en el objeto de negocio con los parámetros adecuados. Cuando la EnablePaging propiedad se establece true
en , la SelectParameters colección incluye dos parámetros adicionales para la primera fila que se solicita y el número de filas solicitadas. Estos dos parámetros se denominan como se define en las StartRowIndexParameterName propiedades y MaximumRowsParameterName . El Select
método debe devolver el número solicitado de filas, empezando por el índice especificado. Dado que los datos podrían no dividirse uniformemente por el tamaño de página, la última página podría contener menos filas. Por lo tanto, el número de filas solicitadas es realmente el número máximo de filas que se devuelven.
Cuando la paginación está habilitada en el control enlazado a datos asociado, el control enlazado a datos llama al Select
método con el índice inicial y el número de filas necesarias. Además, si se establece la SelectCountMethod propiedad , el control enlazado a datos llama al método antes de representar los controles de buscapersonas. Por ejemplo, si un GridView control tiene habilitada la paginación con un tamaño de página de 5 y el método especificado por la SelectCountMethod propiedad devuelve 20, solo se muestran 4 páginas en el buscapersonas.
La EnablePaging propiedad delega a la EnablePaging propiedad del ObjectDataSourceView objeto .