DataList的一次分页困惑

一直不知道该怎么样给没有内置分页的DataLiat进行分页,网上提供的分页算法大致两种,一种是通过数据库分页,另一种是通过PageDataSource,数据库的分页是肯定高效的,但是我还没有学会,而且使用sql2000和sql2005的数据库分页方法是不同的,而我使用的是sql2000,没有内置的分页函数。通PageDataSource分页的方法很多,但是有一点要求,那就是DataSource必须是DataSet的Row,而我学习使用的3层用的是返回泛型接口IList<>,我没有好的解决办法,在博问上50分悬赏也没有人回答,很疑惑,今天找到Scott Mitchell的asp.net2.0数据教程,因为3层结构我是看了前3章才入的门。第四十四章是专门讲DataList和Repeater数据分页的,其中有段代码给了我很大的启示:

 

ContractedBlock.gif ExpandedBlockStart.gif Code
[System.ComponentModel.DataObjectMethodAttribute
            (System.ComponentModel.DataObjectMethodType.Select, 
false)]
            
public PagedDataSource GetProductsAsPagedDataSource(int pageIndex, int pageSize)
            {
            
// Get ALL of the products
            Northwind.ProductsDataTable products = GetProducts();
            
// Limit the results through a PagedDataSource
            PagedDataSource pagedData = new PagedDataSource();
            pagedData.DataSource 
= products.Rows;
            pagedData.AllowPaging 
= true;
            pagedData.CurrentPageIndex 
= pageIndex;
            pagedData.PageSize 
= pageSize;
            
return pagedData;
            }

“获得所有产品,然后通过PagedDataSource进行结果限制”

我通过泛型获得的也是所有结果,那么是不是可以筛选结果获得我所需要的呢?

于是有了下面的代码:

 

ContractedBlock.gif ExpandedBlockStart.gif Code
    public IList<Article> PageDataListBind(string type,int minPage,int PageSize)
        {
            
//获得同类型的所有新闻
            IList<Article> page = new List<Article>();
            IList
<Article> articles = new List<Article>();
            articles 
= this.GetArticleTitleByType(type);
            
int count = minPage + PageSize;
            
if(count>=articles.Count)
            {
                count 
= articles.Count;
            }
            
//通过参数分页
            for (int i = minPage; i <= count; i++)
            {
                page.Add(articles[i]);
            }
            
return page;
        }

结果是可以的,通过设置ObjectDataSource的筛选参数,进行分页设置。

虽然达到了需求,但是有很大的浪费。希望博友能帮我想想更好的办法

 

转载于:https://www.cnblogs.com/kulong995/archive/2008/10/26/1319748.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值