2009-09-15修改,精簡一些冗雜的代碼,僅保留核心
點擊下載源代碼及控件:SourceCode
在使用Linq to sql做為數(shù)據(jù)源的可以使用該工具編碼出快速高效的數(shù)據(jù)綁定,以下僅列出了在asp.net mvc中運用的例子
注T:泛型
引用上面的項目
新建一個分頁類繼承上面的類
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace Helper
{
public class PagedDataSource<T>:
Rsion.ASP.NET.Data.Linq.PagedDataSource<T> where T:class
{
public PagedDataSource()
: base(new Models.DbContext())
{
}
}
}
這樣就可以使用分頁了
創(chuàng)建一個分頁數(shù)據(jù)源對象:
PagedDataSource<T> ps = new PagedDataSource<T>();
ps.CurrentPageIndex = (page??1)-1;//當(dāng)前頁,page為參數(shù)
ps.PageSize = 1;//每頁顯示數(shù)目
ps.IsDescendingSort = true;//是否倒序排列
ps.OrderBy = a => a.AddDate;//根據(jù)字段排序
ps.SelectObject = a => a; //選擇字段 ps.Condition = a => true; //符合選擇的條件
//ps就做為一個數(shù)據(jù)源了。
//下面在mvc中返回這個數(shù)據(jù)源
return View(ps);
ps.SelectObject = a => a; //選擇字段
//如果僅選取實體類的一個或幾個屬性則可以新建一個繼承改實體類的子類,如:
public class SubT:T{}
接著就可以通過:
ps.SelectObject=a=>new SubT{
..}; 在View中將IView設(shè)置為
Inherits="System.Web.Mvc.ViewPage<WgEdu.Helper.PagedDataSource<要迭代的類型>>"
通過Model.PagedInfoContent屬性獲取分頁控制和顯示信息
下面是View的代碼
<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage<Helper.PagedDataSource<Models.T>>" %>
<h2 class="controlnav">書籍列表</h2>
<table cellspacing="0" class="mgr">
<tr>
<th style="width:250px;">名稱</th>
</tr>
<% foreach (var item in Model){ %>
<tr>
<td>
<%= Html.Encode(item.Name) %><!--假設(shè)T包含一個Name屬性-->
</td>
</tr>
<% }%>
</table>
<!--分頁信息顯示在下面-->
<%=Model.PagedInfoContent %>
即實現(xiàn)了如下分頁效果:

如果你覺得樣式太呆板,可以自己通過獲取RecordCount,PageCount,CurrentPageIndex等進行綁定!
怎樣是不是很簡單呢??
希望大家支持我http://www.rsion.com/
Tag標(biāo)簽: Asp.NET,SQL,asp.net MVC