用pageDataSource类
让客户满意是我们工作的目标,不断超越客户的期望值来自于我们对这个行业的热爱。我们立志把好的技术通过有效、简单的方式提供给客户,将通过不懈努力成为客户在信息化领域值得信任、有价值的长期合作伙伴,公司提供的服务项目有:域名与空间、网页空间、营销软件、网站建设、深州网站维护、网站推广。
与DataSource用法差不多
由于DataList本身没有带分页功能,pageDateSource祢补了这个不足,你可以当作DateSource来使用,没有太大区别
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Text.RegularExpressions;
public partial class _Default : System.Web.UI.Page
{
SqlHelper MySqlHelper = new SqlHelper(); // 我写的数据库操作方法集,创建一个实例
Operation MyOperation = new Operation(); // 我写的网站通用处理方法集,创建一个实例
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
GbookData();
lb_count.Text = MySqlHelper.MyScalar("SELECT COUNT(*) FROM BBS WHERE BBS_IsDisplay = '1'"); // 记录条数
}
}
protected void GbookData() // 分页程序代码
{
string strURL = Request.RawUrl;
int intPage = 1;
PagedDataSource MyPager = new PagedDataSource();
MyPager.DataSource = MySqlHelper.MyDS("SELECT * FROM BBS WHERE BBS_IsDisplay = '1' ORDER BY BBS_ID DESC").Tables["MyTable"].DefaultView;
MyPager.PageSize = 9;
MyPager.AllowPaging = true;
hpl_first.Enabled = true;
hpl_up.Enabled = true;
hpl_down.Enabled = true;
hpl_end.Enabled = true;
if (strURL.Contains("/Page/"))
{
string strPage = strURL.Substring(strURL.LastIndexOf("/Page/") + 6);
if (strURL.Substring(strURL.LastIndexOf("/")) == "/")
{
Response.Redirect("NoAccess.htm");
}
if (Regex.IsMatch(strPage, "\\d"))
{
int thisPage;
try
{
thisPage = Convert.ToInt32(strURL.Substring(strURL.LastIndexOf("/Page/") + 6));
if (thisPage 1 || thisPage MyPager.PageCount)
{
Response.Redirect("NoAccess.htm");
}
else
{
intPage = thisPage;
}
}
catch
{
Response.Redirect("NoAccess.htm");
}
}
else
{
Response.Redirect("NoAccess.htm");
}
}
hpl_first.NavigateUrl = "~/GuestBook/Page/1";
hpl_up.NavigateUrl = "~/GuestBook/Page/" + (intPage - 1).ToString();
hpl_down.NavigateUrl = "~/GuestBook/Page/" + (intPage + 1).ToString();
hpl_end.NavigateUrl = "~/GuestBook/Page/" + MyPager.PageCount;
MyPager.CurrentPageIndex = intPage - 1;
Repeater_1.DataSource = MyPager;
Repeater_1.DataBind();
if (MyPager.IsFirstPage)
{
hpl_first.Enabled = false;
hpl_up.Enabled = false;
}
if (MyPager.IsLastPage)
{
hpl_down.Enabled = false;
hpl_end.Enabled = false;
}
lb_thispage.Text = intPage.ToString(); // 当前页码
lb_totalpage.Text = MyPager.PageCount.ToString(); // 总页数
}
}
当然能,把你不分页的程序贴出来,我给你修改嘛。
主要就是利用rs.PageSize等实现,在你程序的下面语句:
rs.open sqlc,conn,1,1
之后,添加下面的代码可以控制显示的记录范围:
rs.PageSize = 10 'pagesize属性指定了每页要显示的记录条数
rs.AbsolutePage = Page '把页码赋给absolutepage属性从而知当前页的首条记录号
上的PAGE是调用是带过来的参数,没有参数时指定为1,表示显示第一页。
两个方案,一,是通过控件来控制分页,就是先将数据全部读到缓存中,然后利用控件的每页显示数量以及下一页,上一页的跳转按钮控制。二,是利用数据库中的存储过程来实现,在存储过程中已经写好分页代码,每次读取的时候都只读取一定数量的信息!!