ObjectDataSource.EnablePaging Propriedade
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
Recebe ou define um valor que indica se o controlo de fonte de dados suporta a paginação através do conjunto de dados que recupera.
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 Propriedade
true se o controlo de fonte de dados suportar a paginação através dos dados que recupera; caso contrário, false.
Exemplos
Os três exemplos seguintes mostram uma página Web, uma classe de página por trás do código e uma classe de acesso a dados que permitem ao utilizador escolher quantos registos são exibidos na página.
A página Web contém um ObjectDataSource controlo cuja EnablePaging propriedade está definida como true. A SelectCountMethod propriedade é definida como o nome de um método que devolve o número total de registos na consulta. A MaximumRowsParameterName propriedade e a StartRowIndexParameterName propriedade são definidas pelos nomes dos parâmetros usados no método Select. A página também contém um DropDownList controlo.
<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>
O segundo exemplo mostra um handler para o ListControl.SelectedIndexChanged evento do DropDownList controlo. O código no handler define a PageSize propriedade para a seleção do utilizador.
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
O terceiro exemplo mostra a classe de acesso a dados que recupera dados da tabela Clientes. Inclui um método chamado GetSubsetOfEmployees, que é atribuído à SelectMethod propriedade do ObjectDataSource controlo. O exemplo inclui também um método chamado GetEmployeeCount, que é atribuído à SelectCountMethod propriedade do ObjectDataSource controlo. A classe utiliza o LINQ para consultar a tabela Clientes. O exemplo requer uma classe LINQ para SQL que represente a base de dados Northwind e a tabela Customers. Para mais informações, veja Como: Criar Classes LINQ para SQL numa 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
Observações
A paginação pelo ObjectDataSource controlo é gerida definindo os EnablePaging, StartRowIndexParameterName, MaximumRowsParameterName, e SelectCountMethod propriedades do ObjectDataSource e definindo um método select no objeto de negócio com os parâmetros adequados. Quando a EnablePaging propriedade é definida para true, a SelectParameters coleção inclui dois parâmetros adicionais para a primeira linha solicitada e para o número de linhas solicitadas. Estes dois parâmetros são nomeados conforme definido pelas StartRowIndexParameterName propriedades e MaximumRowsParameterName . O Select método deve devolver o número de linhas solicitado, começando no índice especificado. Como os dados podem não se dividir de forma uniforme pelo tamanho da página, a última página pode conter menos linhas. Assim, o número de linhas solicitadas é, na verdade, o número máximo de linhas que são devolvidas.
Quando a paginação está ativada no controlo associado ao limite de dados, o controlo ligado aos dados chama o Select método com o índice inicial e o número de linhas necessárias. Além disso, se a SelectCountMethod propriedade estiver definida, o controlo databound chama o método antes de renderizar os controlos do pager. Por exemplo, se um GridView controlo tiver a paginação ativada com um tamanho de página 5, e o método especificado pela SelectCountMethod propriedade devolver 20, apenas 4 páginas são exibidas no pager.
A EnablePaging propriedade delega à EnablePaging propriedade do ObjectDataSourceView objeto.