好象直接选要到第几页的功能没有啊,不算太完善吧
我是新手,也不知道是不是没看懂

解决方案 »

  1.   

    试试我的,编译为heoa.dll文件, 
    在页面头部加上
    <%@ Register TagPrefix="expo" Namespace="HEOA" Assembly="HEOA" %>只需要将页面上的 asp:datagrid 改为 expo:custdatagrid , 并加上 UseCustomPager="True" 属性,如果没有 UserCustomPager 或为False即与DataGrid一样 ):
    using System;
    using System.Collections;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Web;
    using System.Web.SessionState;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.HtmlControls;namespace HEOA
    {
    /// <summary>
    /// Summary description for CustDataGrid.
    /// </summary>
    public class CustDataGrid : DataGrid
    {
    public CustDataGrid()
    {
    //
    // TODO: Add constructor logic here
    //
    this.UseCustomPager = false; Init += new EventHandler( this.OnInit );
    ItemCreated += new DataGridItemEventHandler(OnItemCreated);
    this.ItemCommand += new DataGridCommandEventHandler( this.DataGridItemCommand );
    }// private bool CancelBubbledEvent = false; // PROPERTY: AllowMultiSelect 
    public bool UseCustomPager = false; // EVENT HANDLER: Init
    private void OnInit(Object sender, EventArgs e)
    {
    // Add a templated column that would allow for selection.
    // The item template contains a checkbox. It also features a templated 
    // footer containing links for Unselect/Select all 
    } // EVENT HANDLER: ItemCreated
    private void OnItemCreated(Object sender, DataGridItemEventArgs e)
    {
    // System.Diagnostics.Trace.WriteLine( string.Format("\n CustDataGrid! e.CommandName = {0}\n" , e.Item.ItemType ));
    // Get the newly created item
    ListItemType itemType = e.Item.ItemType; ///////////////////////////////////////////////////////////////////
    // FOOTER
    if (itemType == ListItemType.Pager )
    {
    if ( this.UseCustomPager )
    {
    e.Item.Cells[0].Controls.Clear(); Table table = new Table();
    table.Width = Unit.Percentage(100);

    TableRow row = new TableRow();
    table.Rows.Add(row); TableCell cell; cell = new TableCell();
    cell.Wrap = false;
    cell.Width = Unit.Percentage(50);
    cell.HorizontalAlign = HorizontalAlign.Left;
    string str;
    str = string.Format("第{0}页/总{1}页" , this.CurrentPageIndex + 1 , this.PageCount);
    // System.Diagnostics.Trace.WriteLine( string.Format("\n str = {0}\n" , str )); cell.Text = str;
    row.Cells.Add( cell ); cell = new TableCell();
    cell.Wrap = false;
    cell.Width = Unit.Percentage(50);
    cell.HorizontalAlign = HorizontalAlign.Right; LinkButton linkButton; linkButton = new LinkButton();
    linkButton.CommandName = "第一页";
    linkButton.Text = "第一页";
    linkButton.Enabled = this.CurrentPageIndex > 0;
    cell.Controls.Add( linkButton );
    cell.Controls.Add( new LiteralControl("|") ); linkButton = new LinkButton();
    linkButton.CommandName = "前一页";
    linkButton.Text = "前一页";
    linkButton.Enabled = this.CurrentPageIndex > 0;
    cell.Controls.Add( linkButton );
    cell.Controls.Add( new LiteralControl("|") ); linkButton = new LinkButton();
    linkButton.CommandName = "后一页";
    linkButton.Text = "后一页";
    linkButton.Enabled = this.CurrentPageIndex < ( this.PageCount - 1 ) ;
    cell.Controls.Add( linkButton );
    cell.Controls.Add( new LiteralControl("|") ); linkButton = new LinkButton();
    linkButton.CommandName = "最后页";
    linkButton.Text = "最后页";
    linkButton.Enabled = this.CurrentPageIndex < ( this.PageCount - 1 ) ;
    cell.Controls.Add( linkButton ); row.Cells.Add(cell); e.Item.Cells[0].Controls.Clear();
    e.Item.Cells[0].Controls.Add( table );
    }
    }
    } private void DataGridItemCommand (object sender , DataGridCommandEventArgs e)
    {
    // System.Diagnostics.Trace.WriteLine( string.Format("\n CustDataGrid! e.CommandName = {0}\n" , e.CommandName ));
    switch( e.CommandName )
    {
    case "第一页":
    {
    DataGridPageChangedEventArgs arg = new DataGridPageChangedEventArgs( sender , 0 );
    OnPageIndexChanged( arg );
    }
    break; case "前一页":
    {
    DataGridPageChangedEventArgs arg = new DataGridPageChangedEventArgs( sender , 0 );
    if ( this.CurrentPageIndex > 0 )
    arg = new DataGridPageChangedEventArgs( sender , this.CurrentPageIndex - 1 ) ;
    OnPageIndexChanged( arg );
    }
    break;

    case "后一页":
    {
    DataGridPageChangedEventArgs arg = new DataGridPageChangedEventArgs( sender , this.PageCount - 1 );
    if ( this.CurrentPageIndex < (this.PageCount - 1) )
    arg = new DataGridPageChangedEventArgs( sender , this.CurrentPageIndex + 1 ) ;
    OnPageIndexChanged( arg );
    }
    break; case "最后页":
    {
    DataGridPageChangedEventArgs arg = new DataGridPageChangedEventArgs( sender , this.PageCount - 1 );
    OnPageIndexChanged( arg );
    }
    break; default:
    // if ( ! this.CancelBubbledEvent )
    // {
    // this.CancelBubbledEvent = true;
    // OnItemCommand( e );
    // }
    break;
    }
    }
    }
    }