datalist和repeater通用分页

本文介绍了一个简单的分页控件实现方法,通过ASP.NET技术,实现了动态加载数据和页面跳转功能。具体包括获取总记录数、计算总页数、显示当前页数据等功能。
 

前台==============================

  1.    <table cellspacing="1" cellpadding="1" width="100%" 
  2.                   bgcolor="#999999" border="0" style="border-collapse:collapse;" >
  3.                 <tbody>
  4.                   <tr align="center" bgcolor="#e0f0ff">
  5.                     <td width="189" height="27"><strong>工具名称</strong></td>
  6.                     <td width="285" align="center"><strong>说明</strong></td>
  7.                     <td width="146"><div align="center"><strong>时间</strong></div></td>
  8.                     <td width="49" align="center"><strong>下载</strong></td>
  9.                   </tr>
  10.                     <asp:Repeater ID="Repeater3" runat="server"> 
  11.                     <ItemTemplate>
  12.                       <tr align="center" bgcolor="#ffffff">
  13.                     <td height="27" align="left"><%# Eval("name")%></td>
  14.                     <td align="left"><%# Eval("js")%></td>
  15.                     <td><div align="center">最新</div></td>
  16.                     <td align="center"><a 
  17.                         href='<%# Eval("url")%>'><img 
  18.                         height="18" src="images/copy.gif" 
  19.                         width="19" border="0" /></a></td>
  20.                   </tr>
  21.                     </ItemTemplate>
  22.                     </asp:Repeater>
  23.                   
  24.                    
  25.                 
  26.                           </tbody>
  27.               </table>
  28. <!--分页的按钮-->
  29. <TABLE id="Table1" cellSpacing="0" borderColorDark="white" cellPadding="0" align="right"
  30.         border="0" style="WIDTH: 637px; HEIGHT: 28px">
  31.         <TR align="center">
  32.          <TD noWrap width="10%">
  33.           <asp:label id="lblRecNum" runat="server"></asp:label>条记录</TD>
  34.          <TD noWrap width="30%">
  35.           <asp:label id="lblCurPageNO" runat="server"></asp:label>页/共
  36.           <asp:label id="lblPageNum" runat="server"></asp:label></TD>
  37.          <TD noWrap width="5%">
  38.           <asp:Button ID="btnFirst" runat="server" Text="首页" CausesValidation="False" OnClick="btnFirst_Click" /></TD>
  39.          <TD noWrap width="5%">
  40.           <asp:Button ID="btnPreview" runat="server" Text="上页" CausesValidation="False" OnClick="btnPreview_Click" /></TD>
  41.          <TD noWrap width="5%">
  42.           <asp:Button ID="btnNext" runat="server" Text="下页" CausesValidation="False" OnClick="btnNext_Click" /></TD>
  43.          <TD noWrap width="5%">
  44.           <asp:Button ID="btnLast" runat="server" Text="末页" CausesValidation="False" OnClick="btnLast_Click" /></TD>
  45.          <TD noWrap width="20%"><FONT face="宋体"> </FONT>
  46.          </TD>
  47.          <TD noWrap width="20%">转到
  48.           <asp:dropdownlist id="ddlJumpToPageNum" runat="server" AutoPostBack="True" onselectedindexchanged="ddlJumpToPageNum_SelectedIndexChanged"></asp:dropdownlist></TD>
  49.         </TR>
  50.        
  51.        </TABLE>

             ======================================

后台:===========================================================

  1. public partial class downpage : System.Web.UI.Page
  2. {
  3.     protected int pageNum = 1;
  4.     protected int recNum = 0;
  5.     protected int pageRecNum = 20;/这里是每页的记录数,可以改动
  6.     protected int curPageNO = 0;
  7.     protected void Page_Load(object sender, EventArgs e)
  8.     {
  9.         if (!Page.IsPostBack)
  10.         {
  11.             BindRepeater1();
  12.             BindRepeater2();
  13.             SqlConnection myConn = new SqlConnection(ConfigurationManager.AppSettings["ConnectionString"]);
  14.             string strSQL = "select count(*) from downfile";
  15.             SqlCommand mycommand = new SqlCommand(strSQL, myConn);
  16.             myConn.Open();
  17.             recNum = Convert.ToInt32(mycommand.ExecuteScalar());
  18.             lblRecNum.Text = mycommand.ExecuteScalar().ToString();
  19.             myConn.Close();
  20.             //-----------pageRecNum
  21.             //------------------pageRecNum,pageNum
  22.             if (recNum > 0)
  23.             {
  24.                 if (recNum % pageRecNum == 0)
  25.                 {
  26.                     pageNum = recNum / pageRecNum;
  27.                 }
  28.                 else
  29.                 {
  30.                     pageNum = Convert.ToInt32(recNum / pageRecNum) + 1;
  31.                     if (pageNum == 1)
  32.                     {
  33.                         btnFirst.Enabled = false;
  34.                         btnPreview.Enabled = false;
  35.                         btnNext.Enabled = false;
  36.                         btnLast.Enabled = false;
  37.                     }
  38.                 }
  39.             }
  40.             else
  41.             {
  42.                 pageNum = 1;
  43.                 btnFirst.Enabled = false;
  44.                 btnPreview.Enabled = false;
  45.                 btnNext.Enabled = false;
  46.                 btnLast.Enabled = false;
  47.             }
  48.             for (int i = 1; i <= pageNum; i++)
  49.             {
  50.                 ddlJumpToPageNum.Items.Add(i.ToString());
  51.             }
  52.             lblPageNum.Text = pageNum.ToString();
  53.             ViewState["PageRowNum"] = pageRecNum;
  54.             ViewState["RecNum"] = recNum;
  55.             ViewState["PageNum"] = pageNum;
  56.             //-----------------curPageNO
  57.             curPageNO = 1;
  58.             ViewState["CurPageNO"] = curPageNO;
  59.             //------------------
  60.         }
  61.         pageRecNum = Convert.ToInt32(ViewState["PageRowNum"]);
  62.         recNum = Convert.ToInt32(ViewState["RecNum"]);
  63.         curPageNO = Convert.ToInt32(ViewState["CurPageNO"]);
  64.         pageNum = Convert.ToInt32(ViewState["PageNum"]);
  65.         //------------pageNum
  66.         if (pageRecNum == -1 || recNum == -1)
  67.         {
  68.             Response.Write("发生错误!");
  69.             Response.End();
  70.         }
  71.         if (curPageNO <= 1)
  72.         {
  73.             curPageNO = 1;
  74.             btnFirst.Enabled = false;
  75.             btnPreview.Enabled = false;
  76.         }
  77.         //-----------------
  78.         //lblRecNum.Text = recNum.ToString();
  79.         lblCurPageNO.Text = ViewState["CurPageNO"].ToString();
  80.         //-----------------
  81.         if (!Page.IsPostBack)
  82.         {
  83.             BindData();
  84.         }
  85.     }
  86.     #region datelist
  87.     private void BindData()
  88.     {
  89.         string commandText = "select * from downfile order by id desc";
  90.         //----------
  91.         SqlConnection myConn = new SqlConnection(ConfigurationSettings.AppSettings["ConnectionString"]);
  92.         SqlCommand cmd = new SqlCommand(commandText, myConn);
  93.         cmd.Parameters.Add("@tj"true);
  94.         myConn.Open();
  95.         SqlDataAdapter da = new SqlDataAdapter();
  96.         da.SelectCommand = cmd;
  97.         DataSet ds = new DataSet();
  98.         da.Fill(ds, (Convert.ToInt32(ViewState["CurPageNO"]) - 1) * pageRecNum, pageRecNum, "editor");
  99.         //----------
  100.         Repeater.DataSource = ds.Tables["editor"]; /如果是DataList就换成DataListID
  101.         Repeater.DataBind();/如果是DataList就换成DataListID
  102.         ds.Clear();
  103.         myConn.Close();
  104.         lblCurPageNO.Text = ViewState["CurPageNO"].ToString();
  105.     }
  106.     #endregion
  107.     #region 移动页面
  108.     private void MoveFirst()
  109.     {
  110.         curPageNO = 1;
  111.         ViewState["CurPageNO"] = curPageNO.ToString();
  112.         BindData();
  113.         //------
  114.         btnFirst.Enabled = false;
  115.         btnPreview.Enabled = false;
  116.         btnNext.Enabled = true;
  117.         btnLast.Enabled = true;
  118.     }
  119.     private void MovePrevious()
  120.     {
  121.         curPageNO = Convert.ToInt32(ViewState["CurPageNO"]) - 1;
  122.         if (curPageNO == 0)
  123.         {
  124.             curPageNO = 1;
  125.         }
  126.         ViewState["CurPageNO"] = curPageNO.ToString();
  127.         BindData();
  128.         //------
  129.         if (curPageNO == 1)
  130.         {
  131.             btnFirst.Enabled = false;
  132.             btnPreview.Enabled = false;
  133.         }
  134.         btnNext.Enabled = true;
  135.         btnLast.Enabled = true;
  136.     }
  137.     private void MoveNext()
  138.     {
  139.         curPageNO = Convert.ToInt32(ViewState["CurPageNO"]) + 1;
  140.         if (curPageNO <= pageNum)
  141.         {
  142.             ViewState["CurPageNO"] = curPageNO;
  143.         }
  144.         else
  145.         {
  146.             ViewState["CurPageNO"] = pageNum;
  147.         }
  148.         BindData();
  149.         //------
  150.         btnFirst.Enabled = true;
  151.         btnPreview.Enabled = true;
  152.         if (curPageNO >= pageNum)
  153.         {
  154.             curPageNO = pageNum;
  155.             btnNext.Enabled = false;
  156.             btnLast.Enabled = false;
  157.         }
  158.     }
  159.     private void MoveLast()
  160.     {
  161.         curPageNO = pageNum;
  162.         ViewState["CurPageNO"] = curPageNO.ToString();
  163.         BindData();
  164.         //------
  165.         btnFirst.Enabled = true;
  166.         btnPreview.Enabled = true;
  167.         btnNext.Enabled = false;
  168.         btnLast.Enabled = false;
  169.     }
  170.     #endregion
  171.     protected void btnFirst_Click(object sender, System.EventArgs e)
  172.     {
  173.         MoveFirst();
  174.         binddrop();
  175.     }
  176.     protected void btnPreview_Click(object sender, System.EventArgs e)
  177.     {
  178.         MovePrevious();
  179.         binddrop();
  180.     }
  181.     protected void btnNext_Click(object sender, System.EventArgs e)
  182.     {
  183.         MoveNext();
  184.         binddrop();
  185.     }
  186.     protected void btnLast_Click(object sender, System.EventArgs e)
  187.     {
  188.         MoveLast();
  189.         binddrop();
  190.     }
  191.     private void binddrop()
  192.     {
  193.         this.ddlJumpToPageNum.SelectedValue = curPageNO.ToString();
  194.     }
  195.     protected void ddlJumpToPageNum_SelectedIndexChanged(object sender, System.EventArgs e)
  196.     {
  197.         ViewState["CurPageNO"] = Convert.ToInt32(ddlJumpToPageNum.SelectedValue);
  198.         if (Convert.ToInt32(ddlJumpToPageNum.SelectedValue) == 1)
  199.         {
  200.             btnFirst.Enabled = false;
  201.             btnPreview.Enabled = false;
  202.             btnNext.Enabled = true;
  203.             btnLast.Enabled = true;
  204.         }
  205.         else
  206.         {
  207.             if (Convert.ToInt32(ddlJumpToPageNum.SelectedValue) == pageNum)
  208.             {
  209.                 btnFirst.Enabled = true;
  210.                 btnPreview.Enabled = true;
  211.                 btnNext.Enabled = false;
  212.                 btnLast.Enabled = false;
  213.             }
  214.             else
  215.             {
  216.                 btnFirst.Enabled = true;
  217.                 btnPreview.Enabled = true;
  218.                 btnNext.Enabled = true;
  219.                 btnLast.Enabled = true;
  220.             }
  221.         }
  222.         BindData();
  223.     }
  224. }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值