惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Engineering at Meta
Engineering at Meta
J
Java Code Geeks
I
InfoQ
腾讯CDC
Vercel News
Vercel News
IT之家
IT之家
V
Visual Studio Blog
P
Proofpoint News Feed
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
G
Google Developers Blog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
博客园 - 叶小钗
有赞技术团队
有赞技术团队
月光博客
月光博客
Martin Fowler
Martin Fowler
量子位
L
LangChain Blog
B
Blog
Last Week in AI
Last Week in AI
博客园 - 司徒正美
Microsoft Security Blog
Microsoft Security Blog
博客园 - 聂微东
Microsoft Azure Blog
Microsoft Azure Blog
A
About on SuperTechFans

博客园 - 相濡以沫

盘点:教师饮食方面的八个坏习惯。 DB2数据库与Oracle并发控制(锁)的大比拼。 Oracle批量fetch的小技巧。 教你设计大型Oracle数据库。 在Linux操作系统上手动安装DB2。 Linux下自动登录远程服务器的方法。 在Ubuntu上安装Snort入侵检测系统。 详解Ubuntu8.04 tftp设置。 解析Windows Server 2008组策略的安全设置。 理解802.1x网络的安全机制。 白领女性职场15招。 Linux svn管理工具的12个命令实践。 玩转vsftpd服务器的四大高级配置。 如何利用Forefront管理应用服务器。 ERP应用瓶颈 避免四大错误。 SharePoint 2010开发:如何找寻切入点? 拆穿安全Web浏览的十大谎言。 Asp.Net Url传值出现乱码的解决方法。 - 相濡以沫 - 博客园 asp.net(C#)套用模板操作Excel。
Repeater和DataList分页。
相濡以沫 · 2010-08-23 · via 博客园 - 相濡以沫

  因为项目需要,要用到DataList和Repeater的分页,但这两种加载数据的控件,本身并不自带分页功能,要控制查询语句来进行分页,但是语句过于复杂,或是条件太多,语句很难写,但用PagedDataSource进行分页,就简单多了,代码分配清晰,容易理解。

  下面实例是用PagedDataSource类实现DataList控件的数据分页,也可用于Repeater。

  页面后台代码

  using System;

  using System.Data;

  using System.Configuration;

  using System.Collections;

  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.Data;

  using System.Data.SqlClient;

  public partial class Demo : System.Web.UI.Page

  {

  protected SqlConnection conn;  //添加数据库的操作对象

  protected SqlDataAdapter da;

  protected DataSet ds;

  protected SqlCommand comm;

  protected void Page_Load(object sender, EventArgs e)

  {

  getArticle();

  }

  private void getArticle()      //取得Article数据

  {

  conn = new SqlConnection("server=127.0.0.1;database=ObtainEmployment;user id=sa;password=;");//取连接字符串,建立连接

  da = new SqlDataAdapter();

  da.SelectCommand = new SqlCommand("SELECT top 50  * FROM db_Article where  checkup='1' ORDER BY intime DESC ", conn);

  ds = new DataSet();

  try

  {

  conn.Open();

  da.Fill(ds, "Article");

  conn.Close();

  }

  catch (SqlException e1)

  {

  Response.Write(e1.ToString());

  }

  int cup = Convert.ToInt32(this.lb_CurrentPage.Text);  //当前页数,初始化为地1页

  PagedDataSource ps = new PagedDataSource();

  ps.DataSource = ds.Tables["Article"].DefaultView;

  ps.AllowPaging = true;

  ps.PageSize = 6;     //每页显示的数据的行数

  ps.CurrentPageIndex = cup - 1;

  lb_count.Text = ps.DataSourceCount.ToString(); //获取记录总数

  lb_page.Text = ps.PageCount.ToString(); //获取总页数

  if (!IsPostBack)

  {

  for (int i = 1; i < ps.PageCount + 1; i++)

  {

  this.DropDownList1.Items.Add(i.ToString());

  }

  LinkUp.Enabled = true;

  LinkDown.Enabled = true;

  }

  try

  {

  DropDownList1.SelectedItem.Text = cup.ToString();

  DataList1.DataSource = ps;

  DataList1.DataBind();

  }

  catch (Exception ex)

  {

  throw ex;

  }

  }

  protected void LinkDown_Click(object sender, EventArgs e) //下一页按钮代码

  {

  try

  {

  lb_CurrentPage.Text = Convert.ToString(Convert.ToInt32(lb_CurrentPage.Text) + 1);

  DropDownList1.SelectedValue = lb_CurrentPage.Text;

  getArticle();

  }

  catch (Exception ex)

  {

  Response.Write("<script language=javascript>" + "alert(\"已经是最后一页\")" + "</script>");

  lb_CurrentPage.Text = "1";

  getArticle();

  }

  }

  protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e) //跳转到指定页代码

  {

  int page =Convert.ToInt16((DropDownList1.SelectedItem.Value));

  lb_CurrentPage.Text = page.ToString();

  getArticle();

  }

  protected void LinkUp_Click(object sender, EventArgs e)  //上一页按钮代码

  {

  try

  {

  if (Convert.ToInt16(lb_CurrentPage.Text) > 1)

  {

  lb_CurrentPage.Text = Convert.ToString(Convert.ToInt32(lb_CurrentPage.Text) - 1);

  DropDownList1.SelectedValue = lb_CurrentPage.Text;

  getArticle();

  }

  else

  {

  Response.Write("<script language=javascript>" + "alert(\"已经是第一页\")" + "</script>");

  }

  }

  catch (Exception ex)

  {

  Response.Write("<script language=javascript>" + "alert(\"已经是第一页\")" + "</script>");

  }

  }

  protected void LinkFirst_Click(object sender, EventArgs e)  //跳到第一页代码

  {

  if (lb_CurrentPage.Text != "1")

  lb_CurrentPage.Text = "1";

  else

  {

  Response.Write("<script language=javascript>" + "alert(\"已经是第一页\")" + "</script>");

  }

  getArticle();

  }

  protected void LinkLast_Click(object sender, EventArgs e)  //跳到最后一页代码

  {

  if (lb_CurrentPage.Text.ToString() !=lb_page.Text.ToString())

  lb_CurrentPage.Text = lb_page.Text.ToString();

  else

  {

  Response.Write("<script language=javascript>" + "alert(\"已经是最后一页\")" + "</script>");

  }

  getArticle();

  }

  }

  页面前台代码

  <%@ Page Language="C#" CodeFile="Demo.aspx.cs" Inherits="Demo" %>

  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

  <html xmlns="http://www.w3.org/1999/xhtml" >

  <head runat="server">

  <title>无标题页</title>

  </head>

  <body>

  <form id="form1" runat="server">

  <div>

  <asp:DataList ID="DataList1" runat="server">

  <ItemTemplate>

  <asp:Label ID="lbNwes" runat="server" Text='<%#eval_r("title")%>'></asp:Label>

  &nbsp;

  <asp:Label ID="lbTime" runat="server" Text='<%#eval_r("intime")%>'></asp:Label>

  </ItemTemplate>

  </asp:DataList></div>

  <br />

  共<asp:Label ID="lb_count" runat="server" Text="Label"></asp:Label>条记录

  &nbsp; &nbsp; &nbsp; 共<asp:Label ID="lb_page" runat="server" Text="Label"></asp:Label>页 &nbsp;

  &nbsp; 当前第<asp:Label ID="lb_CurrentPage" runat="server" Text="1"></asp:Label>页&nbsp; &nbsp;

  &nbsp; &nbsp;

  <asp:LinkButton ID="LinkFirst" runat="server" OnClick="LinkFirst_Click">第一页</asp:LinkButton>

  &nbsp; &nbsp;

  <asp:LinkButton ID="LinkUp" runat="server" OnClick="LinkUp_Click">上一页</asp:LinkButton>

  &nbsp; &nbsp;<asp:LinkButton ID="LinkDown" runat="server" OnClick="LinkDown_Click">下一页</asp:LinkButton>

  &nbsp; &nbsp;<asp:LinkButton ID="LinkLast" runat="server" OnClick="LinkLast_Click">最后一页</asp:LinkButton>

  &nbsp; &nbsp;转到第<asp:DropDownList ID="DropDownList1" runat="server" OnSelectedIndexChanged="DropDownList1_SelectedIndexChanged" >

  </asp:DropDownList>页

  </form>

  </body>

  </html>

  注: PagedDataSource 类的部分公共属性:

  AllowCustomPaging  获取或设置指示是否启用自定义分页的值。

  AllowPaging   获取或设置指示是否启用分页的值。

  Count    获取要从数据源使用的项数。

  CurrentPageIndex   获取或设置当前页的索引。

  DataSource   获取或设置数据源。

  DataSourceCount   获取数据源中的项数。

  FirstIndexInPage   获取页中的第一个索引。

  IsCustomPagingEnabled  获取一个值,该值指示是否启用自定义分页。

  IsFirstPage   获取一个值,该值指示当前页是否是首页。

  IsLastPage   获取一个值,该值指示当前页是否是最后一页。

  IsPagingEnabled   获取一个值,该值指示是否启用分页。

  IsReadOnly   获取一个值,该值指示数据源是否是只读的。

  IsSynchronized   获取一个值,该值指示是否同步对数据源的访问(线程安全)。

  PageCount   获取显示数据源中的所有项所需要的总页数。

  PageSize   获取或设置要在单页上显示的项数。

  VirtualCount   获取或设置在使用自定义分页时数据源中的实际项数。