2009-09-15修改,精简一些冗杂的代码,仅保留核心

点击下载源代码及控件: SourceCode 

在使用Linq to sql做为数据源的可以使用该工具编码出快速高效的数据绑定,以下仅列出了在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())
        {
        }
    }
}
这样就可以使用分页了
创建一个分页数据源对象:
PagedDataSource < T >  ps  =   new  PagedDataSource < T > ();
            ps.CurrentPageIndex 
=  (page ?? 1 ) - 1 ; // 当前页,page为参数
            ps.PageSize  =   1 ; // 每页显示数目
            ps.IsDescendingSort  =   true ; // 是否倒序排列
            ps.OrderBy  =  a  =>  a.AddDate; // 根据字段排序
            ps.SelectObject  =  a  =>  a;   // 选择字段          ps.Condition = a => true;  // 符合选择的条件
           
// ps就做为一个数据源了。
// 下面在mvc中返回这个数据源
  return  View(ps);

ps.SelectObject  =  a  =>  a;   // 选择字段
// 如果仅选取实体类的一个或几个属性则可以新建一个继承改实体类的子类,如:
public   class  SubT:T{}
接着就可以通过:
ps.SelectObject
= a => new  SubT{..};
在View中将IView设置为
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)  %><!--假设T包含一个Name属性-->
            
</ td >
         </ tr >
    
<%  } %>
    
</ table >
      <!--分页信息显示在下面-->

    
<%= Model.PagedInfoContent  %>
即实现了如下分页效果:

如果你觉得样式太呆板,可以自己通过获取RecordCount,PageCount,CurrentPageIndex等进行绑定!

怎样是不是很简单呢??
希望大家支持我 http://www.rsion.com/

转载于:https://www.cnblogs.com/newmin/archive/2009/09/04/linq_paged_class_mvc.html

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐