ObjectDataSource.EnablePaging 属性
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
获取或设置一个值,该值指示数据源控件是否支持对它检索的数据集进行分页。
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>
第二个示例演示 控件的 DropDownList 事件的处理程序ListControl.SelectedIndexChanged。 处理程序中的代码将 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 表。 有关详细信息,请参阅 如何:在 Web 项目中创建 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、 StartRowIndexParameterName、 MaximumRowsParameterName和 SelectCountMethod 属性 ObjectDataSource ,并使用适当的参数在业务对象中定义 select 方法来处理的。
EnablePaging当 属性设置为 true
时,集合包含SelectParameters两个附加参数,用于请求的第一行和请求的行数。 这两个参数由 StartRowIndexParameterName 和 MaximumRowsParameterName 属性定义命名。 方法 Select
应返回请求的行数,从指定的索引处开始。 由于数据可能不会均匀除以页面大小,因此最后一页可能包含较少的行。 因此,请求的行数实际上是返回的最大行数。
在关联的数据绑定控件上启用分页时,数据绑定控件使用开始索引和所需的行数调用 Select
方法。 此外,如果 SelectCountMethod 设置了 属性,则数据绑定控件在呈现寻呼控件之前调用 方法。 例如,如果 GridView 控件启用了页面大小为 5 的分页,并且 属性 SelectCountMethod 指定的 方法返回 20,则页导航中仅显示 4 页。
属性 EnablePaging 委托给 EnablePaging 对象的 属性 ObjectDataSourceView 。