http://support.microsoft.com/default.aspx?scid=kb;zh-cn;307710

解决方案 »

  1.   

    namespace PMDDII_Finance.Controls
    {
    using System;
    using System.Data;
    using System.Drawing;
    using System.Web;
    using System.Web.UI.WebControls;
    using System.Web.UI.HtmlControls; /// <summary>
    /// CtlPagination 的摘要说明。
    /// </summary>
    public abstract class CtlPagination : System.Web.UI.UserControl
    {
    protected System.Web.UI.WebControls.LinkButton LinkTo2;
    protected System.Web.UI.WebControls.LinkButton LinkTo1;
    protected System.Web.UI.WebControls.Label LblCurrentindex;
    protected System.Web.UI.WebControls.Label LblPagecount;
    protected System.Web.UI.WebControls.Label LblAllcount;
    protected System.Web.UI.WebControls.LinkButton Last;
    protected System.Web.UI.WebControls.LinkButton Next_Page;
    protected System.Web.UI.WebControls.LinkButton Prev_Page;
    protected System.Web.UI.WebControls.LinkButton First;
    protected System.Web.UI.WebControls.TextBox To;
    public   DataGrid Grid;
    public   DataSet dset;
            public   DataTable dt;
    public   DataView dv;
    private int pageCount=0;//总共页数
    private int currentPage=0;//当前页号
    private int recordCount=0;//记录数
    public static bool selectItem=true;//选中行属性true--选中,false--不进行选中行
    public static bool addNo=true;//是否加入编号
    public DataGridControl DGC;
    private void Page_Load(object sender, System.EventArgs e)
    {
    if(!Page.IsPostBack)
    {
    selectItem=true;
    addNo=true;
    }
    if(Grid!=null)
    {
    InitData();

    }
    // 在此处放置用户代码以初始化页面
    }
    // public  CtlPagination(DataGrid dg)
    // {
    //            Grid=dg;
    // int count=(int)Grid.PageCount*(int)Grid.PageSize;
    // LblAllcount.Text=count.ToString();//记录数
    // LblPagecount.Text=Grid.PageCount.ToString();//页数
    //
    //
    // }
    void btnClick(object sender,System.EventArgs e)
    {   
    // Grid.CurrentPageIndex=Convert.ToInt32(LblCurrentindex.Text)-1;
    if (Grid==null)
    return;
    string arg=((LinkButton)sender).CommandArgument;
    switch(arg)
    {
    case ("first"):
    Grid.CurrentPageIndex=0;
    break;
    case ("prev"):
    if(Grid.CurrentPageIndex>0)
    Grid.CurrentPageIndex--;
    break;
    case ("next"):
    if(Grid.CurrentPageIndex<(Grid.PageCount-1))
    Grid.CurrentPageIndex++;
    break;
    case ("last"):
    if(Grid.CurrentPageIndex>=0)
    Grid.CurrentPageIndex=Grid.PageCount-1;
    break;
    default:
    Grid.CurrentPageIndex=Convert.ToInt32(arg);
    break;
    }
    databind();
    LblCurrentindex.Text=(Grid.CurrentPageIndex+1).ToString();//当前页码
    InitData();
    DGC=new DataGridControl();
    DGC.DG=this.Grid;
    DGC.DS=this.dset;
    if (selectItem)
    {
    DGC.Item_Load();
    }
    if (addNo)
    {
    DGC.Add_No();
    }
    // Grid.CurrentPageIndex=0;
    }
    private void goClick(object sender, System.EventArgs e)
    {
    //            Grid.CurrentPageIndex=currentPage-1;
    if (Grid==null)
    return; if(To.Text.Trim()!="")
    {
    int index=Int32.Parse(To.Text.Trim())-1;
    if(index>=0&&index<Grid.PageCount)
    {
    Grid.CurrentPageIndex=index;
    }
    LblCurrentindex.Text=(Grid.CurrentPageIndex+1).ToString();
    InitData();
    }
    databind();
    InitData();
    DGC=new DataGridControl();
    DGC.DG=this.Grid;
    DGC.DS=this.dset;
    if (selectItem)
    {
    DGC.Item_Load();
    }
    if (addNo)
    {
    DGC.Add_No();
    }

    // Grid.CurrentPageIndex=0;
    }
    private void databind()
    {
    Grid.DataSource=dset.Tables[0].DefaultView;
    Grid.DataBind();
    }
    public  bool SelectItem
    {
    get 
    {
    return selectItem;
    }
    set
    {
    selectItem=value;
    }
    }
    public bool AddNo 
    {
    get
    {
    return addNo;
    }
    set 
    {
    addNo=value;
    }
    }
    // public DataSet dataset
    // {
    // get 
    // {
    // return dset;
    // }
    // set
    // {
    // dset=value;
    // }
    // }
    //初始刷新数据
    public void InitData()
    {
    if (dset!=null)
    dv=dset.Tables[0].DefaultView;
    if (dt!=null)
    dv=dt.DefaultView;
    pageCount=Grid.PageCount;
    currentPage=Grid.CurrentPageIndex+1;
    recordCount=dv.Count;
    LblAllcount.Text=recordCount.ToString();//记录数
    LblPagecount.Text=pageCount.ToString();//页数
    LblCurrentindex.Text=currentPage.ToString();
    }
    #region Web Form Designer generated code
    override protected void OnInit(EventArgs e)
    {
    //
    // CODEGEN:该调用是 ASP.NET Web 窗体设计器所必需的。
    //
    InitializeComponent();
    base.OnInit(e);
    }

    /// 设计器支持所需的方法 - 不要使用
    /// 代码编辑器修改此方法的内容。
    /// </summary>
      

  2.   

    private void InitializeComponent()
    {
    this.First.Click += new System.EventHandler(this.btnClick);
    this.Prev_Page.Click += new System.EventHandler(this.btnClick);
    this.Next_Page.Click += new System.EventHandler(this.btnClick);
    this.Last.Click += new System.EventHandler(this.btnClick);
    this.LinkTo1.Click += new System.EventHandler(this.goClick);
    this.LinkTo2.Click += new System.EventHandler(this.goClick);
    this.Load += new System.EventHandler(this.Page_Load); }
    #endregion
    }
    }DataGridControl类
    --------------------------------------------------------
    using System;
    using System.Collections;
    using System.Data;
    using System.Data.SqlClient;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;namespace PMDDII_Finance.Controls
    {
    /// <summary>
    /// DataGridControl 的摘要说明。
    /// </summary>
    public class DataGridControl
    {
    public DataGrid DG;//DataGrid引用变量
    public DataTable DT;
    public DataSet  DS;
    public DataView DV;
    public DataGridControl()
    {
    //
    // TODO: 在此处添加构造函数逻辑
    //
    }
    //重载构造函数设定进行操作的Datagrid,及与DataGrid的数据源
    public DataGridControl(DataGrid dg ,DataSet  ds)
    {
    DG=dg;
    DS=ds;
    }
    public DataGridControl(DataGrid dg ,DataTable  dt)
    {
    DG=dg;
    DT=dt;
    }
    public DataGridControl(DataGrid dg ,DataView dv)
    {
    DG=dg;
    DV=dv;
    } //选中DataGrid的一行记录
    public void Item_Load()//选中记录
    {
    for(int i=0;i<=DG.Items.Count-1 ;i++)
    {
    // DG_info.DataKeys [i].ToString ();
                   
    string reload="this.childNodes(0).childNodes(0).click();";//javascript脚本语句
    DG.Items [i].Attributes.Add("onclick",reload);
    // DG_info.Items [i].Cells[0].Text=Convert.ToString((DG_info.CurrentPageIndex)*DG_info.PageSize+i);
    }
    }
    //DataGrid的排序方法
    public void Item_Sort( System.Web.UI.WebControls.DataGridSortCommandEventArgs e)
    {
    string headtxt,subhead,strsort="";
    int i,j,n;
    //遍厉所有DataGrid列,判断那一列进行排序
    foreach(DataGridColumn colum in DG.Columns)
    {   //将表示升序降序的下三角与上三角图标清除
    // headtxt=colum.HeaderText;
    // i=headtxt.IndexOf("<",0,headtxt.Length);
    // if (i>0)
    // {
    // subhead=headtxt.Substring(0,i);
    // colum.HeaderText=subhead;
    // }
    headtxt=colum.HeaderText;
    i=headtxt.IndexOf("▼",0,headtxt.Length);
    if (i>0)
    {
    subhead=headtxt.Substring(0,i);
    colum.HeaderText=subhead;
    }
    i=headtxt.IndexOf("▲",0,headtxt.Length);
    if (i>0)
    {
    subhead=headtxt.Substring(0,i);
    colum.HeaderText=subhead;
    }
    //进行排序的列
    if (colum.SortExpression==e.SortExpression)
    {
    strsort=colum.SortExpression;
    j=colum.SortExpression.Length;
    n=colum.SortExpression.IndexOf("ASC",0,j);
    if (n>0)//如果原先是升序则将SortExpression改为降序
    {
    strsort=strsort.Replace("ASC","DESC");
    // colum.HeaderText=colum.HeaderText+"<img src='../image/downarrow.gif'  style=\"BORDER-TOP-STYLE: none; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BORDER-BOTTOM-STYLE: none\"/>";
    colum.HeaderText=colum.HeaderText+"▼";
    }
    else
    {
    n=colum.SortExpression.IndexOf("DESC",0,j);
    if (n>0)
    {
    strsort=strsort.Replace("DESC","ASC");
    // colum.HeaderText=colum.HeaderText+"<img src='../image/UPARROW.gif'  style=\"BORDER-TOP-STYLE: none; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BORDER-BOTTOM-STYLE: none\"/>";
    colum.HeaderText=colum.HeaderText+"▲";
    }
    else
    {
    strsort=strsort+" ASC";
    // colum.HeaderText=colum.HeaderText+"<img src='../image/UPARROW.gif' style=\"BORDER-TOP-STYLE: none; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BORDER-BOTTOM-STYLE: none\"/>";
    colum.HeaderText=colum.HeaderText+"▲";
    }
    }
    colum.SortExpression=strsort;
                       
    }
    }
    if (DS!=null)
    DV=DS.Tables[0].DefaultView;
    if (DT!=null)
    DV=DT.DefaultView;
    DV.Sort=strsort;
    DG.DataSource=DV;
    DG.DataBind();
    }
    //鼠标滑动行高亮显示
    public void Item_Light()
    {   //Button test=new Button();

    // foreach(DataGridItem  item in DG.Items)
    // {
    // // DG_info.DataKeys [i].ToString ();
    // item.Style.Add("cursor","hand");//指定哪一列实现指针变手形
    //     System.Drawing.Color  bgcolor=DG.SelectedItemStyle.BackColor;
    // item.Style.Add("cursor","hand");
    // if(DG.SelectedIndex !=item.ItemIndex)
    // {
    // if(item.ItemType == ListItemType.Item )
    // {   
    // item.Attributes.Add("onmouseover","if(this.style.backgroundColor!='Salmon')this.style.backgroundColor='blue'");//指定鼠标移到记录上时的颜色
    // item.Attributes.Add("onmouseout","if(this.style.backgroundColor!='Salmon')this.style.backgroundColor='white'");//指定鼠标移出记录时的颜色
    // }
    // else if(item.ItemType == ListItemType.AlternatingItem)
    // {
    // item.Attributes.Add("onmouseover","this.style.backgroundColor='blue'");
    // item.Attributes.Add("onmouseout","this.style.backgroundColor='white'");
    // }
    //
    // }
    foreach(DataGridItem  item in DG.Items)
    {
    //    DG_info.DataKeys [i].ToString ();
    // item.Style.Add("cursor","hand");//指定哪一列实现指针变手形
    //System.Drawing.Color  bgcolor=DG.SelectedItemStyle.BackColor;
    // item.Style.Add("cursor","hand"); if(DG.SelectedIndex!=item.ItemIndex)
    {
    item.Attributes.Add("onmouseover", "if(this.style.backgroundColor='white')this.style.backgroundColor='#b8dbf8'");
    //item.Attributes.Add("onmousedown", "if(this.style.backgroundColor='white')this.runtimeStyle.backgroundColor='#b8dbf8'");
    if(item.ItemType == ListItemType.Item )
    {   
    item.Attributes.Add("onclick", "this.style.backgroundColor='#b8dbf8'");
    //item.Attributes.Add("onmouseover","if(this.style.backgroundColor!='#b8dbf8')this.style.backgroundColor='#b8dbf8'");//指定鼠标移到记录上时的颜色
    item.Attributes.Add("onmouseout","if(this.style.backgroundColor='#b8dbf8')this.style.backgroundColor='white'");//指定鼠标移出记录时的颜色
    }
              
    else if(item.ItemType == ListItemType.AlternatingItem)
    {
    item.Attributes.Add("onclick", "this.style.backgroundColor='#b8dbf8'");
    //item.Attributes.Add("onmouseover","if(this.style.backgroundColor!='#b8dbf8')this.style.backgroundColor='#b8dbf8'");
    item.Attributes.Add("onmouseout","if(this.style.backgroundColor='#b8dbf8')this.style.backgroundColor='white'");
    }
     
    } }


    }
    //将第一列生成标识列
    public void Add_No()
    {
    for(int i=0;i<=DG.Items.Count-1 ;i++)//生成datagrid序号列
    {((LinkButton)DG.Items [i].Cells[0].Controls[0]).Text=Convert.ToString((DG.CurrentPageIndex)*DG.PageSize+i+1);}
    } }
    }