:)

解决方案 »

  1.   

    没有现成的。
    可以使用aspnet pager控件,不错
      

  2.   

    我自己做过这个控件,继承下datagrid然后在footer里面操作就可以拉
      

  3.   

    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.SqlClient;public partial class Default2 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                BindGridView();
                IsFirstLastPage();
            }
        }    public void BindGridView()
        {
            Color c = new Color();
            this.My_GridView.DataSource = c.GetColors();
            this.My_GridView.DataBind();
        }    //protected void My_GridView_PageIndexChanged(object sender, gr e)
        //{
        //    this.My_GridView.PageIndex = e.NewPageIndex;
        //    BindGridView();
        //}
        //protected void llbtnFirstPage_Click(object sender, EventArgs e)
        //{
        //    this.My_GridView.PageIndex = 0;
        //}
        //protected void lbtnPrePage_Click(object sender, EventArgs e)
        //{
        //    this.My_GridView.PageIndex = (int)Math.Max(0, this.My_GridView.PageIndex - 1);
        //}
        protected void My_GridView_PageIndexChanging(object sender, GridViewPageEventArgs e)
        {
            this.My_GridView.PageIndex = e.NewPageIndex;        BindGridView();
            IsFirstLastPage();
        }    //protected void llbtnLastPage_Click(object sender, EventArgs e)
        //{
        //    this.My_GridView.PageIndex = this.My_GridView.PageCount - 1;
        //}
        //protected void lbtnNextPage_Click(object sender, EventArgs e)
        //{
        //    this.My_GridView.PageIndex = (int)Math.Min(this.My_GridView.PageCount - 1, this.My_GridView.PageIndex + 1);
        //}    private void Page_Click(object sender, System.EventArgs e)
        {
            string commandArg = ((LinkButton)sender).CommandArgument;
            switch (commandArg)
            {
                case "First":
                    this.My_GridView.PageIndex = 0;
                    break;
                case "Prev":
                    this.My_GridView.PageIndex = (int)Math.Max(0, this.My_GridView.PageIndex - 1);
                    break;
                case "Next":
                    this.My_GridView.PageIndex = (int)Math.Min(this.My_GridView.PageCount - 1, this.My_GridView.PageIndex + 1);
                    break;
                case "Last":
                    this.My_GridView.PageIndex = this.My_GridView.PageCount - 1;
                    break;
                default:
                    break;
            }
            BindGridView();
            IsFirstLastPage();
        }
     
        protected void My_GridView_DataBound(object sender, EventArgs e)
        {
            Label lblCurrentPage = (Label)this.My_GridView.BottomPagerRow.Cells[0].FindControl("lblPage");
            Label lblTotalPage = (Label)this.My_GridView.BottomPagerRow.Cells[0].FindControl("lblTotalPage");
            lblCurrentPage.Text = (this.My_GridView.PageIndex+1).ToString();
            lblTotalPage.Text = this.My_GridView.PageCount.ToString();
        }    private void IsFirstLastPage()
        {
            LinkButton lbtnFirst = (LinkButton)this.My_GridView.BottomPagerRow.Cells[0].FindControl("lbtnFirstPage");
            LinkButton lbtnPrev = (LinkButton)this.My_GridView.BottomPagerRow.Cells[0].FindControl("lbtnPrePage");
            LinkButton lbtnNext = (LinkButton)this.My_GridView.BottomPagerRow.Cells[0].FindControl("lbtnNextPage");
            LinkButton lbtnLast = (LinkButton)this.My_GridView.BottomPagerRow.Cells[0].FindControl("lbtnLastPage");
            //存在数据
            if (this.My_GridView.PageCount > 0)
            {
                //控件的数据源的页码数不等于1时
                if (this.My_GridView.PageCount != 1)
                {
                    //如果在第一页,则“上一页”不可见
                    if (this.My_GridView.PageIndex == 0)
                    {
                        lbtnPrev.Enabled = false;
                    }
                    else
                    {
                        lbtnPrev.Enabled = true;
                    }
                    //如果在最后一页,则“下一页”不可见
                    if (this.My_GridView.PageIndex == this.My_GridView.PageCount - 1)
                    {
                        lbtnNext.Enabled = false;
                    }
                    else
                    {
                        lbtnNext.Enabled = true;
                    }
                }
                //如果只有一页,则只显示“首页”和“最后一页”
                else
                {
                    lbtnPrev.Enabled = false;
                    lbtnNext.Enabled = false;
                }
            }
            else
            { 
                //表示控件的数据为空,则不显示任何分页按钮
                lbtnFirst.Enabled = false;
                lbtnNext.Enabled = false;
                lbtnPrev.Enabled = false;
                lbtnLast.Enabled = false;
            }
        }
    }
      

  4.   

    html后面的代码: <PagerTemplate>
                    <table style="width: 100%">
                        <tr>
                            <td style="width: 80%" align="right">
                                <asp:LinkButton ID="llbtnFirstPage" runat="server" CommandArgument="First" CommandName="Page" >首页</asp:LinkButton>
                                <asp:LinkButton ID="lbtnPrePage" runat="server" CommandArgument="Prev" CommandName="Page" >上一页</asp:LinkButton>
                                <asp:LinkButton ID="lbtnNextPage" runat="server" CommandArgument="Next" CommandName="Page">下一页</asp:LinkButton>
                                <asp:LinkButton ID="llbtnLastPage" runat="server" CommandArgument="Last" CommandName="Page" >末页</asp:LinkButton>&nbsp;
                            </td>
                            <td>
                                当前为第<asp:Label ID="lblPage" runat="server"></asp:Label>页 &nbsp;/&nbsp; 共<asp:Label
                                    ID="lblTotalPage" runat="server"></asp:Label>页</td>
                        </tr>
                    </table>
                </PagerTemplate>
      

  5.   

    自己写或者用第三方控件aspnetpager(http://www.webdiyer.com/)不错的如果用gridview可以用分页模版
      

  6.   

    <table height="100%" cellSpacing="0" cellPadding="0" width="100%" bgColor="#ffffff" border="0">
    <tr>
    <TD>当前第
    <asp:literal id="LtlPageIndex" runat="server"></asp:literal>页 共
    <asp:literal id="LtlPageCount" runat="server"></asp:literal>页 每页
    <asp:literal id="LtlPageSize" runat="server"></asp:literal>条 共
    <asp:literal id="LtlRecordCount" runat="server"></asp:literal>条
    </TD>
    </tr>
    <tr>
    <td colSpan="8" height="76"><asp:datagrid id="MyDataGrid" runat="server" Width="616px" AllowPaging="True" BorderColor="White"
    BorderWidth="1px" AutoGenerateColumns="False" OnPageIndexChanged="MyDataGrid_Page" PageSize="3">
    <AlternatingItemStyle BackColor="White"></AlternatingItemStyle>
    <ItemStyle HorizontalAlign="Center" VerticalAlign="Middle" BackColor="#F8F8F8"></ItemStyle>
    <HeaderStyle Font-Bold="True"></HeaderStyle>
    <Columns>
    <asp:BoundColumn DataField="p1"></asp:BoundColumn>
    <asp:BoundColumn DataField="p2"></asp:BoundColumn>
    </Columns>
    <PagerStyle Visible="False"></PagerStyle>
    </asp:datagrid></td>
    </tr>
    <TR>
    <td></td>
    <TD><asp:linkbutton id="LBtnFirst" runat="server" CommandName="First">首页</asp:linkbutton><asp:linkbutton id="LBtnPrev" runat="server" CommandName="Prev">上一页</asp:linkbutton><asp:linkbutton id="LBtnNext" runat="server" CommandName="Next">下一页</asp:linkbutton><asp:linkbutton id="LBtnLast" runat="server" CommandName="Last">尾页</asp:linkbutton></TD>
    </TR>
    </table>
    //共多少条记录
    recordCount = n;
    // LtlRecordCount.Text=recordCount.ToString(); //获取当前的页数//共多少页
    pageCount = (int)Math.Ceiling( recordCount * 1.0 /  PageSize);
    // LtlRecordCount.Text=pageCount.ToString(); //避免纪录从有到无时,并且已经进行过反页的情况下CurrentPageIndex > PageCount出错
    if(recordCount ==0)
    {
    this.MyDataGrid.CurrentPageIndex = 0;
    }
    else if(this.MyDataGrid.CurrentPageIndex >= pageCount)
    {
    this.MyDataGrid.CurrentPageIndex = pageCount - 1;
    } MyDataGrid.DataSource  = new DataView(dt);
    MyDataGrid.DataBind();
    NavigationStateChange();
    }
    // 置为编辑状态。
    public void MyDataGrid_Edit(Object sender, DataGridCommandEventArgs e) 
    {
    e.Item.Cells[0].Enabled=true;
    MyDataGrid.EditItemIndex = (int)e.Item.ItemIndex;
    BindDataGrid();
    }
    // 将编辑后的数据递交到数据库。
    public void MyDataGrid_Update(Object sender, DataGridCommandEventArgs e) 
    {
    MyDataGrid.EditItemIndex = -1;
    BindDataGrid();
    }
    // 取消编辑。
    public void MyDataGrid_Cancel(Object sender, DataGridCommandEventArgs e) 
    {
    MyDataGrid.EditItemIndex = -1;
    BindDataGrid();
    } // 删除记录。
    public void MyDataGrid_Delete(object sender, DataGridCommandEventArgs e)
    {
    string SQL_DeleteCls = "Delete from web_news_class where id=" + e.Item.Cells[0].Text + "";
    if(List.ExeSql(SQL_DeleteCls))
    {
    Response.Write("<script>alert('删除成功!')</script>");
    }
    else
    {
    Response.Write("<script>alert('删除失败!')</script>");
    }
    BindDataGrid();

    } // 翻页时的页面重定位方法。
    public void MyDataGrid_Page(object sender,DataGridPageChangedEventArgs e)
    {
    MyDataGrid.CurrentPageIndex = e.NewPageIndex;
    MyDataGrid.DataBind();
    // BindDataGrid();
    }
    private void LBtnNavigation_Click(object sender, System.EventArgs e) { LinkButton btn = (LinkButton)sender; switch(btn.CommandName) { case "First": PageIndex = 0; break; case "Prev"://if( PageIndex > 0 ) PageIndex = PageIndex - 1; break; case "Next"://if( PageIndex < PageCount -1) PageIndex = PageIndex + 1; break; case "Last": PageIndex = PageCount - 1; break; } MyDataGrid.DataBind();             
    BindDataGrid();
    }
    public void NavigationStateChange() { if( PageCount <= 1 )//( RecordCount <= PageSize )//小于等于一页 {
    this.LBtnFirst.Enabled = false; this.LBtnPrev.Enabled = false; this.LBtnNext.Enabled = false; this.LBtnLast.Enabled = false;
    }
    else //有多页 {
    if( PageIndex == 0 )//当前为第一页
    {
    this.LBtnFirst.Enabled = false;
    this.LBtnPrev.Enabled = false;
    this.LBtnNext.Enabled = true;
    this.LBtnLast.Enabled = true;
    }
    else if( PageIndex == PageCount - 1 )//当前为最后页 
    {
    this.LBtnFirst.Enabled = true; this.LBtnPrev.Enabled = true; this.LBtnNext.Enabled = false; this.LBtnLast.Enabled = false;
    }
    else //中间页
    {
    this.LBtnFirst.Enabled = true; this.LBtnPrev.Enabled = true; this.LBtnNext.Enabled = true; this.LBtnLast.Enabled = true; }
    } if(RecordCount == 0)//当没有纪录时DataGrid.PageCount会显示1页 this.LtlPageCount.Text = "0"; else this.LtlPageCount.Text = PageCount.ToString(); if(RecordCount == 0) this.LtlPageIndex.Text = "0"; else this.LtlPageIndex.Text = (PageIndex + 1).ToString();//在有页数的情况下前台显示页数加1 this.LtlPageSize.Text = PageSize.ToString(); this.LtlRecordCount.Text = RecordCount.ToString(); }
    // 总页数
    public int PageCount
    {
    get{return MyDataGrid.PageCount;}
    }
    //页大小
    public int PageSize
    {
    get{return MyDataGrid.PageSize;}
    }
    //页索引,从零开始
    public int PageIndex
    {
    get{return MyDataGrid.CurrentPageIndex;} set{MyDataGrid.CurrentPageIndex = value;}
    }
    // 纪录总数
    public int RecordCount
    {
    get{return recordCount;}
    set{recordCount = value;}
    } //查询记录条数
    public int CalculateRecord(string SQL_GetInf)
    {
    int intCount;
    intCount = 0;
    OleDbDataReader  AdminReader = List.GetList(SQL_GetInf);
    while(AdminReader.Read())
    {
    intCount++; }


    return intCount;
    }
    /// 此方法的内容。
    /// </summary>
    private void InitializeComponent()
    {    
    this.LBtnFirst.Click += new System.EventHandler(this.LBtnNavigation_Click);
    this.LBtnPrev.Click += new System.EventHandler(this.LBtnNavigation_Click);
    this.LBtnNext.Click += new System.EventHandler(this.LBtnNavigation_Click);
    this.LBtnLast.Click += new System.EventHandler(this.LBtnNavigation_Click);
    this.Load += new System.EventHandler(this.Page_Load); }
    #endregion