• repeater控件实现分页


    repeater控件实现排序的方法,今天我再向大家介绍repeater控件如何实现分页的效果。

    分页分为真分页和假分页。

    真分页:控件上一页需要显示多少数据,就从数据库取出并绑定多少数据,每次换页时都需要访问数据库。

    假分页:从数据库一次性取出所有数据绑定到控件上,再将所有数据根据一页显示多少条而分页。

    从以上二者的概念上我们可以看出,区别在于分页时从数据库读取信息的方式,真分页的效率无疑是最高的。假分页在首次页面加载的时候会比较慢(如果数据量较多)。

    二者其实各有各的优缺点,可根据需要来自行选择(比如数据量较多时,先用真分页;想减少与后台的交互,可以使用假分页)。

    下面我就介绍repeater控件基于以上两种方法的分页:

    无论真分页还是假分页,前台分页按钮代码都可以类似以下的方式:

    <table>

       <tr>

          <td align="center"> 
                 <asp:LinkButton ID="lbtnFirstPage" runat="server" OnClick="lbtnFirstPage_Click">页首</asp:LinkButton>
                 <asp:LinkButton ID="lbtnpritPage" runat="server" OnClick="lbtnpritPage_Click">上一页</asp:LinkButton> 
                 <asp:LinkButton ID="lbtnNextPage" runat="server" OnClick="lbtnNextPage_Click">下一页</asp:LinkButton>
                 <asp:LinkButton ID="lbtnDownPage" runat="server" OnClick="lbtnDownPage_Click">页尾</asp:LinkButton><br />
                 第<asp:Label ID="labPage" runat="server" Text="Label"></asp:Label>页/共<asp:Label ID="LabCountPage" runat="server" Text="Label"></asp:Label>页

          </td>

      </tr>

    </table>

    1. 假分页

    protected void Page_Load(object sender, EventArgs e)

    {

        if (!IsPostBack)

        {

             this.labPage.Text = "1";
                 this.contrlRepeater();

        }

    }

    //获取指字符个数的字符

    public string cuts(string aa,int bb)

    {

        if (aa.Length <= bb)

        {

            return aa;

        }

    else

        {

            return aa.Substring(0, bb);

        }

    }

    //Repeater分页控制显示方法

    public void contrlRepeater()

    {

         DataTable dt = '连接数据库并查询'

         PagedDataSource pds = new PagedDataSource();

         pds.DataSource = dt.DefaultView;

         pds.AllowPaging = true;

         pds.PageSize = 2;

         pds.CurrentPageIndex = Convert.ToInt32(this.labPage.Text) - 1;

         Repeater1.DataSource = pds;

         LabCountPage.Text = pds.PageCount.ToString();

         labPage.Text = (pds.CurrentPageIndex + 1).ToString();

         this.lbtnpritPage.Enabled = true;

     

        this.lbtnFirstPage.Enabled = t

    this.lbtnNextPage.Enabled = true;

         this.lbtnDownPage.Enabled = true;

         if(pds.CurrentPageIndex<1)

         {

              this.lbtnpritPage.Enabled = false;

              this.lbtnFirstPage.Enabled = false;

         }

         if (pds.CurrentPageIndex == pds.PageCount-1)

         {

              this.lbtnNextPage.Enabled = false;

              this.lbtnDownPage.Enabled = false;

         }

         Repeater1.DataBind();

    }

    protected void lbtnpritPage_Click(object sender, EventArgs e)

    {

         this.labPage.Text = Convert.ToString(Convert.ToInt32(labPage.Text) - 1);

         this.contrlRepeater();

    }

    protected void lbtnFirstPage_Click(object sender, EventArgs e)

    {

         this.labPage.Text = "1";

         this.contrlRepeater();

    }

    protected void lbtnDownPage_Click(object sender, EventArgs e)

    {

         this.labPage.Text =this.LabCountPage.Text;

         this.contrlRepeater();

    }

    protected void lbtnNextPage_Click(object sender, EventArgs e)

    {

         this.labPage.Text = Convert.ToString(Convert.ToInt32(labPage.Text) + 1);

         this.contrlRepeater();

    }

    2. 真分页

    真分页主要实现在于sql语句上:

    select   top  每页显示的记录数 *  from  topic  where  id  not   in  ( select   top  (当前的页数-1)*每页显示的记录数 id  from  topic  order   by  id  desc )  order   by  id  desc

    再查询出总记录数来计算总页数pageCount

    int pageCount = (int)Math.Ceiling((double)查询出的总记录数个数/ (double)每页显示的记录数)

    之后将返回的数据表直接绑定到repeater控件上,再将当前页数、总页数利用以上我给出的假分页套上就行了。

    有了思路和主要代码, 相信大家自己应该能套上,我就不再重复写代码了。

    转:http://blog.csdn.net/dfdj1010/article/details/5783317

  • 相关阅读:
    Redis21:客户端与服务器端的通信与redis管道
    Redis20:keys、scan、bigkeys、查看key的存储方式
    Redis19:限流
    Redis18:分布式锁
    Redis17:cluster集群
    Redis16:两种redis集群解决方案:codis和cluster
    Android : 获取声卡信息的测试代码
    Android : 基于alsa库的音乐播放
    Android system :灯光系统_HAL_lights
    Android system :led_class驱动
  • 原文地址:https://www.cnblogs.com/mvv118/p/3794207.html
Copyright © 2020-2023  润新知