【发布时间】:2011-11-23 12:18:18
【问题描述】:
我不明白,当您需要知道总行数才能使分页工作时,您如何只能从数据库中获取所需的行数。
我的意思是: 我按照这个例子: http://www.c-sharpcorner.com/uploadfile/rizwan328/datalist-custom-paging-in-Asp-Net-using-C-Sharp/
但是我有一个数据库,而不是使用数据表。
我是这样从数据库中获取新闻的,这会从我的新闻表中获取所有新闻:
List<News> news = News.GetNews();
public static List<News> GetNews(){
List<News> news = new List<News>();
using (SqlConnection conn = new SqlConnection(CONNSTRING)) {
SqlCommand cmd = new SqlCommand("SELECT * FROM News_news ORDER BY date DESC", conn);
这会从所有新闻项目中获取所有数据。
然后我创建一个 PagedDataSource:
PagedDataSource objPds = new PagedDataSource();
objPds.DataSource = news;
objPds.AllowPaging = true;
objPds.PageSize = numRows;
//Set the current page
objPds.CurrentPageIndex = CurrentPage;
//Set the buttons
将数据放在一个重复器中,它将在 aspx 页面上显示前 5 个项目
repeater1.DataSource = objPds;
repeater1.DataBind();
像这样,我有一个分页的首页,显示总页数和当前页面,当我点击下一页的按钮时,我会重新做一遍。
但我知道这是不正确的,因为我总是得到所有的消息,然后丢弃我不需要的消息。但是请问,我需要怎么做才能只获得所需的新闻?
我需要先计算表中的行数吗?
【问题讨论】:
-
您可能缺少 pageCount 属性初始化
-
我不明白,我需要能够设置总页数,不是吗?根据数据源,它会创建总页数,难道不是您必须获取所有数据吗?