请问  要实现下面的分页功能  谁有现成代码啊????     求
      

解决方案 »

  1.   

    gridview 72绝技 你在网上搜索嘛,呵呵上面有很多关于gridview的操作
      

  2.   

    给你我使用过的两种方法:
    1、分页的存储过程:create proc PageNum
    @PageSize int, --每页显示条数
    @PageIndex int, --当前是第几页
    @totalRows int output, --总行数
    @totalPages int output --总页数
    as
    declare @startId int
    declare @endId int
    set @startId = @PageSize*(@PageIndex-1)+1
    set @endId = @startId+@PageSize-1
    select @totalRows=COUNT(*) from Books
    set @totalPages=@totalRows/@PageSize
    if(@totalRows%@PageSize != 0) --如果总行数除每页显示数据量的值不等于0,则总页数得加1
    begin
    set @totalPages=@totalPages+1
    end
    declare @IndexTable table(Id int identity(1,1) ,nId int)
    insert into @IndexTable select Id from Books
    select * from @IndexTable as t ,Books as b where t.Id>=@startId and t.Id<=@endId and t.nId=b.Id
    go
     
    declare @tr int --总行数
    declare @tp int --总页数
    exec PageNum 4,2,@tr output ,@tp output
    print '这是总页数'+convert(varchar,@tp) --数据转换
    print @tr  2、不一定要用存储过程,可以一次性读到DataTable后,再做处理  private int pageSize = 0; //每页显示行数
      private int pageCurrent = 0; //当前页号
      private int pageCount = 0; //页数=总记录数/每页显示行数
      private int nCurrent = 0; //当前记录行号
      private int nMax = 0; //总记录数
      private DataTable srcTable = null; //元数据  private void First_Click(object sender, EventArgs e)
      {
      try
      {
      pageCurrent = 1; //当前页数从1开始
      nCurrent = 0; //当前记录数从0开始  if (srcTable == null || srcTable.Rows.Count == 0)
      return;  DataTable table = LoadPageData();
      ChangeDataSoure(table);  First.Enabled =false;
      Prev.Enabled = false;
      Next.Enabled = true;
      End.Enabled = true;
      }
      catch (Exception ex)
      {
      MessageBox.Show(ex.Message);
      }
      }  private void Prev_Click(object sender, EventArgs e)
      {
      try
      {
      pageCurrent--;
      nCurrent = pageSize * (pageCurrent - 1);  if (srcTable == null || srcTable.Rows.Count == 0)
      return;
      DataTable table = LoadPageData();
      ChangeDataSoure(table);  bool b = pageCurrent <= 1 ? false : true;
      First.Enabled = b;
      Prev.Enabled = b;
      Next.Enabled = true;
      End.Enabled = true;
      }
      catch (Exception ex)
      {
      MessageBox.Show(ex.Message);
      }
      }  private void Next_Click(object sender, EventArgs e)
      {
      try
      {
      pageCurrent++;
      nCurrent = pageSize * (pageCurrent - 1);  if (srcTable == null || srcTable.Rows.Count == 0)
      return;
      DataTable table = LoadPageData();
      ChangeDataSoure(table);  bool b = pageCurrent >= pageCount ? false : true;
      Next.Enabled = b;
      End.Enabled = b;  First.Enabled = true;
      Prev.Enabled = true;
      }
      catch (Exception ex)
      {
      MessageBox.Show(ex.Message);
      }
      }  private void End_Click(object sender, EventArgs e)
      {
      try
      {
      pageCurrent = pageCount;
      nCurrent = pageSize * (pageCurrent - 1);  if (srcTable == null || srcTable.Rows.Count == 0)
      return;  DataTable table = LoadPageData();
      ChangeDataSoure(table);  Next.Enabled =false;
      End.Enabled = false;
      First.Enabled = true;
      Prev.Enabled = true;
      }
      catch (Exception ex)
      {
      MessageBox.Show(ex.Message);
      }
      }  private void InitPageSet()
      {
      pageSize = 30; //设置页面行数
      nMax = srcTable.Rows.Count;
      pageCount = (nMax / pageSize); //计算出总页数  if ((nMax % pageSize) > 0)
      {
      pageCount++;
      }  pageCurrent = 1; //当前页数从1开始
      nCurrent = 0; //当前记录数从0开始  First.Enabled =false;
      Prev.Enabled = false;  bool b = pageCurrent == pageCount ? false : true;
      Next.Enabled = b;
      End.Enabled = b;
      }  private DataTable LoadPageData()
      {
      int nStartPos = 0; //当前页面开始记录行
      int nEndPos = 0; //当前页面结束记录行
      DataTable dtTemp = null;
      if (srcTable == null || srcTable.Rows.Count == 0)
      return srcTable;
      try
      {
      dtTemp = srcTable.Clone(); //克隆DataTable结构框架
      if (pageCurrent == pageCount)
      {
      nEndPos = nMax;
      }
      else
      {
      nEndPos = pageSize * pageCurrent;
      }  nStartPos = nCurrent;
      //从元数据源复制记录行
      for (int i = nStartPos; i < nEndPos; i++)
      {
      dtTemp.ImportRow(srcTable.Rows[i]);
      nCurrent++;
      }  textEdit1.Text = pageCurrent.ToString();
      Page.Text = string.Format("/{0}页", pageCount);
      }
      catch (Exception ex)
      {
      MessageBox.Show(ex.Message + "LoadPageData");
      }
      return dtTemp;
      }  private void ChangeDataSoure(DataTable table)
      {
      if (table == null)
      return;
      gridView1.Columns.Clear();
      gridControl1.DataSource = null;
      gridControl1.DataSource = table;  } 
      

  3.   

    先在GridView的属性中激发PageIndexChanging事件,然后再在后台写入下代码: 
     protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
        {
            GridView1.PageIndex = e.NewPageIndex;
            bindGV();
        }
      

  4.   

    我把我的给你吧
    一。在控件的PagerTemplate中写如下代码:
    <table align="center" style="border: 0px; border-style: ridge;" width="700px">
                    <tr>
                        <td class="style1" >
                            <asp:Label ID="lblCurrrentPage" runat="server" ForeColor="#CC3300"></asp:Label>
                            <span>移至</span>
                            <asp:DropDownList ID="page_DropDownList" runat="server" AutoPostBack="True" 
                                OnSelectedIndexChanged="page_DropDownList_SelectedIndexChanged">
                            </asp:DropDownList>
                            <span>页</span>
                            <asp:LinkButton ID="lnkBtnFirst" runat="server" CommandArgument="First" 
                                CommandName="page" ForeColor="Yellow">第一页</asp:LinkButton>
                            <asp:LinkButton ID="lnkBtnPrev" runat="server" CommandArgument="prev" 
                                CommandName="page" ForeColor="Yellow">上一页</asp:LinkButton>
                            <asp:LinkButton ID="lnkBtnNext" runat="server" CommandArgument="Next" 
                                CommandName="page" ForeColor="Yellow">下一页</asp:LinkButton>
                            <asp:LinkButton ID="lnkBtnLast" runat="server" CommandArgument="Last" 
                                CommandName="page" ForeColor="Yellow">最后一页</asp:LinkButton>
                        </td>
                    </tr>
                </table>
    二。在gridview的DataBind事件里写如下代码:
    //取得显示分页界面的那一行
                GridViewRow pagerRow = GridView1.BottomPagerRow;
                if (pagerRow != null)
                {
                    //取得第一页。上一页。下一页。最后一页的超级链接
                    LinkButton lnkBtnFirst = (LinkButton)pagerRow.Cells[0].FindControl("lnkBtnFirst");
                    LinkButton lnkBtnPrev = (LinkButton)pagerRow.Cells[0].FindControl("lnkBtnPrev");
                    LinkButton lnkBtnNext = (LinkButton)pagerRow.Cells[0].FindControl("lnkBtnNext");
                    LinkButton lnkBtnLast = (LinkButton)pagerRow.Cells[0].FindControl("lnkBtnLast");                //设置何时应该禁用第一页。上一页。下一页。最后一页的超级链接
                    if (GridView1.PageIndex == 0)
                    {
                        lnkBtnFirst.Enabled = false;
                        lnkBtnPrev.Enabled = false;
                    }
                    else if (GridView1.PageIndex == GridView1.PageCount - 1)
                    {
                        lnkBtnNext.Enabled = false;
                        lnkBtnLast.Enabled = false;
                    }
                    else if (GridView1.PageCount <= 0)
                    {
                        lnkBtnFirst.Enabled = false;
                        lnkBtnPrev.Enabled = false;
                        lnkBtnNext.Enabled = false;
                        lnkBtnLast.Enabled = false;
                    }
                    //从显示分页的行中取得用来显示页次与切换分页的DropDownList控件
                    DropDownList pageList = (DropDownList)pagerRow.Cells[0].FindControl("page_DropDownList");                //根据欲显示的数据源的总页数,创建DropDownList控件的下拉菜单内容
                    if (pageList != null)
                    {
                        int intPage;
                        for (intPage = 0; intPage <= GridView1.PageCount - 1; intPage++)
                        {
                            //创建一个ListItem对象来存放分页列表
                            int pageNumber = intPage + 1;
                            ListItem item = new ListItem(pageNumber.ToString());                        //交替显示背景颜色
                            switch (pageNumber % 2)
                            {
                                case 0: item.Attributes.Add("style", "background:#CDC9C2;");
                                    break;
                                case 1: item.Attributes.Add("style", "color:red; background:white;");
                                    break;
                            }
                            if (intPage == GridView1.PageIndex)
                            {
                                item.Selected = true;
                            }
                            pageList.Items.Add(item);
                        }
                    }
                    //显示当前所在页数与总页数
                    Label pagerLabel = (Label)pagerRow.Cells[0].FindControl("lblCurrrentPage");                if (pagerLabel != null)
                    {                    int currentPage = GridView1.PageIndex + 1;
                        pagerLabel.Text = "第" + currentPage.ToString() + "页(共" + GridView1.PageCount.ToString() + " 页)";                }
                }三。在gridview的PageIndexChanging事件里写如下代码:
     GridView1.PageIndex = e.NewPageIndex;
                GridView1.DataSource = News.GetTopNews();
                GridView1.DataBind();
    (绑定你所需要的数据)
    四。在DropDownList_SelectedIndexChanged事件里写如下代码:
      //取得显示分页界面的那一行
                GridViewRow pagerRow = GridView1.BottomPagerRow;
                //从显示页数的行中取得显示页数的DropDownList控件
                DropDownList pageList = (DropDownList)pagerRow.Cells[0].FindControl("page_DropDownList");
                //将GridView移至用户所选择的页数
                GridView1.PageIndex = pageList.SelectedIndex;
                GridView1.DataSource = News.GetTopNews();
                GridView1.DataBind();
    OK搞定~
      

  5.   

    记得gridview的allowpaging属性为true啊~
      

  6.   

    http://blog.163.com/wyp_xh2009/blog/static/1995081072011102224918525/
    我自己的一套gridview操作,包括翻页,排序,删除,修改等操作,而且效率还不错哦!~