http://expert.csdn.net/Expert/topic/1987/1987616.xml?temp=.1695978

解决方案 »

  1.   

    我刚开始学的时候自己写了自定义的控件  实现了上一页,下一页 首页,尾页 并转到第几页的功能代码不是很严紧,但完全可用,你可以研究一下using System;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;namespace CdzDotNet
    {
    /// <summary>
    /// DataGridNavigator 的摘要说明。
    /// </summary>
    [DefaultProperty("Text"), 
    ToolboxData("<{0}:DataGridNavigator runat=server></{0}:DataGridNavigator>")]
    public class DataGridNavigator : System.Web.UI.WebControls.WebControl
    { LinkButton LinkFirst = new LinkButton();
    LinkButton LinkPreview = new LinkButton();
    LinkButton LinkNext = new LinkButton();
    LinkButton LinkLast = new LinkButton();
    TextBox txtPageIndex = new TextBox();
    Button btnGo = new Button();
    TableRow row = new TableRow(); Label lblPageCount = new Label();
    Label lblCurrentPage = new Label();
    Label lblPageSize = new Label();
    Label lblItemCount = new Label(); static private DataGrid _DataGrid;
    static private DataSet _ds; protected override void CreateChildControls()
    {
    //AddChildControls();

    } protected override void Render(HtmlTextWriter Writer)
    {
    //this.EnsureChildControls();
    base.Render(Writer);
    }
    #region Web Form Designer generated code
    override protected void OnInit(EventArgs e)
    {
    //
    // CODEGEN:该调用是 ASP.NET Web 窗体设计器所必需的。
    // InitializeComponent();
    base.OnInit(e);
    AddChildControls();
    }

    /// <summary>
    /// 设计器支持所需的方法 - 不要使用代码编辑器修改
    /// 此方法的内容。
    /// </summary>
    private void InitializeComponent()
    {    
    LinkFirst.Click += new System.EventHandler(LinkButton_Click);
    LinkPreview.Click += new System.EventHandler(LinkButton_Click);
    LinkNext.Click += new System.EventHandler(LinkButton_Click);
    LinkLast.Click += new System.EventHandler(LinkButton_Click); btnGo.Click += new System.EventHandler(btnGo_Click); }
    #endregion public override Color ForeColor
    {
    get {return row.ForeColor;}
    set {row.ForeColor = value;}
    }
    public string GotoText
    {
    get {return btnGo.Text;}
    set {btnGo.Text = value;}
    } public bool BoundDataGrid(DataGrid DataGridControl, DataSet ds)
    {
    _DataGrid = DataGridControl;
    _ds = ds; if (null==_DataGrid) return false;
    if (null==_ds) return false; _DataGrid.DataSource = _ds;
    _DataGrid.DataBind();
    InitControls(); return true;
    } private bool BoundDataGrid()
    {
    if (_DataGrid==null || _ds==null) return false; if (!this.Page.IsPostBack)
    {
    _DataGrid.DataSource = _ds;
    }
    else
    {
    _DataGrid.DataSource = _ds.Tables[0].DefaultView;
    }
    //_DataGrid.CurrentPageIndex = 0;
    _DataGrid.DataBind(); InitControls(); return true;
    } private void InitControls()
    {
    lblItemCount.Text = _ds.Tables[0].Rows.Count.ToString();
    lblCurrentPage.Text = Convert.ToString(_DataGrid.CurrentPageIndex+1);
    lblPageSize.Text = _DataGrid.PageSize.ToString().Trim();
    lblPageCount.Text = _DataGrid.PageCount.ToString().Trim(); LinkFirst.CommandName = "0";
    LinkFirst.Enabled = _DataGrid.CurrentPageIndex > 0; LinkPreview.CommandName = Convert.ToString(_DataGrid.CurrentPageIndex - 1);
    LinkPreview.Enabled = _DataGrid.CurrentPageIndex > 0; LinkNext.CommandName = Convert.ToString(_DataGrid.CurrentPageIndex + 1);
    LinkNext.Enabled = _DataGrid.CurrentPageIndex < _DataGrid.PageCount - 1; LinkLast.CommandName = Convert.ToString(_DataGrid.PageCount - 1);
    LinkLast.Enabled = _DataGrid.CurrentPageIndex < _DataGrid.PageCount - 1; } private void AddChildControls()
    {
    Controls.Clear(); Table table = new Table();
    Controls.Add(table); table.Rows.Add(row);

    TableCell cell;
    LiteralControl labelText; cell = new TableCell();
    cell.Wrap = false;
    row.Cells.Add(cell);
    labelText = new LiteralControl("共");
    cell.Controls.Add(labelText);
    lblItemCount.Text = "AC";
    cell.Controls.Add(lblItemCount);
    labelText = new LiteralControl("条");
    cell.Controls.Add(labelText);
    cell.Controls.Add(Emptylable()); cell = new TableCell();
    cell.Wrap = false;
    cell.Controls.Add(Emptylable());
    cell.Controls.Add(new LiteralControl("页次"));
    cell.Controls.Add(lblCurrentPage);
    lblCurrentPage.Text = "CP";
    lblCurrentPage.ForeColor = System.Drawing.Color.Red;
    cell.Controls.Add(new LiteralControl("/"));
    cell.Controls.Add(lblPageCount);
    lblPageCount.Text = "PC";
    cell.Controls.Add(new LiteralControl("页"));
    cell.Controls.Add(Emptylable());
    row.Cells.Add(cell);

    cell = new TableCell();
    cell.Wrap = false;
    cell.Controls.Add(Emptylable());
    cell.Controls.Add(lblPageSize);
    lblPageSize.Text = "PS";
    cell.Controls.Add(new LiteralControl("条/页"));
    cell.Controls.Add(Emptylable());
    row.Cells.Add(cell);
    cell = new TableCell();
    cell.Wrap = false;
    cell.Controls.Add(Emptylable());
    cell.Controls.Add(LinkFirst);
    LinkFirst.Text = "[首页]";
    cell.Controls.Add(Emptylable());
    row.Cells.Add(cell); cell = new TableCell();
    cell.Wrap = false;
    cell.Controls.Add(Emptylable());
    cell.Controls.Add(LinkPreview);
    LinkPreview.Text = "[上一页]";
    cell.Controls.Add(Emptylable());
    row.Cells.Add(cell); cell = new TableCell();
    cell.Wrap = false;
    cell.Controls.Add(Emptylable());
    cell.Controls.Add(LinkNext);
    LinkNext.Text = "[下一页]";
    cell.Controls.Add(Emptylable());
    row.Cells.Add(cell); cell = new TableCell();
    cell.Wrap = false;
    cell.Controls.Add(Emptylable());
    cell.Controls.Add(LinkLast);
    LinkLast.Text = "[尾页]";
    cell.Controls.Add(Emptylable());
    row.Cells.Add(cell);

    cell = new TableCell();
    cell.Wrap = false;
    cell.Controls.Add(Emptylable());
    cell.Controls.Add(new LiteralControl("转到第"));
    row.Cells.Add(cell);

    cell = new TableCell();
    cell.Controls.Add(txtPageIndex);
    txtPageIndex.Width = Unit.Parse("30");
    txtPageIndex.Height = Unit.Parse("20");
    row.Cells.Add(cell); cell = new TableCell();
    cell.Controls.Add(new LiteralControl("页"));
    row.Cells.Add(cell); cell = new TableCell();
    cell.Wrap = false;
    cell.Controls.Add(Emptylable());
    cell.Controls.Add(btnGo);
    btnGo.Text = "GO"; row.Cells.Add(cell); } private LiteralControl Emptylable()
    {
    return new LiteralControl("&nbsp;");
    } private void LinkButton_Click(object sender, System.EventArgs e)
    {
    if (_DataGrid == null) return;
    _DataGrid.CurrentPageIndex = int.Parse(((LinkButton)sender).CommandName);
    BoundDataGrid(_DataGrid, _ds);
    } private void btnGo_Click(object sender, System.EventArgs e)
    {
    try
    {
    if (txtPageIndex.Text == "") return;
    if (int.Parse(txtPageIndex.Text)-1 > _DataGrid.PageCount - 1) return;
    if (int.Parse(txtPageIndex.Text)-1 < 0) return;
    _DataGrid.CurrentPageIndex = int.Parse(txtPageIndex.Text) - 1;
    BoundDataGrid(_DataGrid, _ds);
    txtPageIndex.Text = ""; }
    catch
    {
    }
    }
    }
    }
      

  2.   

    在datagird的PageIndexChanged事件中写ItemsGrid.CurrentPageIndex = e.NewPageIndex;
    DataGrid1.DataSource = ds.Tables(0);
    DataGrid1.DataBind():
      

  3.   

    以下代码可以帮你实现“当前为第×页  共×页”:
    void showstats() 
    {
    int i=DataGrid1.CurrentPageIndex+1;
    lblCurrentIndex.Text = "当前为第<font color=#cc0000>" + i+"</font>页";
    lblPageCount.Text = "共<font color=#cc0000>" + DataGrid1.PageCount+"</font>页";
    }然后在数据绑定的代码的后面加上showstats();注:你要添加两个Label:lblCurrentIndex和lblPageCount
      

  4.   

    http://xml.sz.luohuedu.net/xml/ShowDetail.asp?id=B12283DE-DB20-4322-ACCC-12724442808A