SortGrid

using System;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;

namespace SouEi.SortDataGrid
{
 /// <summary>
 /// Summary description for DataGrid.
 /// </summary>
 [DefaultProperty("Text"),
 ToolboxData("<{0}:SortGrid runat=server></{0}:SortGrid>")]
 public class SortGrid : System.Web.UI.WebControls.DataGrid
 {
  private string text;
  private SqlDataAdapter adp;
  private DataSet ds = new DataSet();
  private DataView view;
  private string[] arritem;
  [Bindable(true),
  Category("Appearance"),
  DefaultValue("")]
  public string Text
  {
   get
   {
    return text;
   }

   set
   {
    text = value;
   }
  }
  /// <summary>
  /// protect SortDirection
  /// </summary>

  public string SortDirection
  {
   get
   {
    if(ViewState["SortDirection"]==null)
    {
     return null;
    }
    else
    {
     if(ViewState["SortDirection"].ToString()=="")
     {
      return null;
     }
     else
     {
      return ViewState["SortDirection"].ToString();
     }
    }
   }
   set
   {
    ViewState["SortDirection"]=value;
   }
  }
  /// <summary>
  /// protect SortField
  /// </summary>
  public string SortField
  {
   get
   {
    if(ViewState["SortField"]==null)
    {
     return null;
    }
    else
    {
     if(ViewState["SortField"].ToString()=="")
     {
      return null;
     }
     else
     {
      return ViewState["SortField"].ToString();
     }
    }
   }
   set
   {
    ViewState["SortField"]=value;
   }
  }
  /// <summary>
  /// sqlCommandText
  /// </summary>       
  public string selectCommandText
  {
   get
   {
    if(ViewState["selectCommandText"]==null)
    {
     return null;
    }
    else
    {
     if(ViewState["selectCommandText"].ToString()=="")
     {
      return null;
     }
     else
     {

      return ViewState["selectCommandText"].ToString();
     }
    }
   }
   set
   {
    ViewState["selectCommandText"]=value;
   }
  }
  /// <summary>
  /// ConnectionString
  /// </summary>
  public string selectConnectionString
  {
   get
   {
    if(ViewState["selectConnectionString"]==null)
    {
     return null;
    }
    else
    {
     return ViewState["selectConnectionString"].ToString();
    }
   }
   set
   {
    ViewState["selectConnectionString"]=value;
   }
  }
  public DataTable Bindtable;
  public SortGrid()
  {
   this.Init+=new System.EventHandler(this.DataGrid_Init);
  }
  private void DataGrid_Init(object sender,EventArgs e)
  {

   this.Load+= new System.EventHandler(this.DataGrid_Load);           
   this.SortCommand+=new System.Web.UI.WebControls.DataGridSortCommandEventHandler(this.DataGrid_SortCommand);
   this.ItemDataBound += new System.Web.UI.WebControls.DataGridItemEventHandler(this.DataGrid_ItemDataBound);

  }
  private void DataGrid_Load(object sender,EventArgs e)
  {
   this.HorizontalAlign=HorizontalAlign.Center;
   this.AllowSorting=true;
   arritem=new string[256];
   ds=new DataSet();
           
           
  }
    

  /// <summary>
  /// GRIDBinding
  /// </summary>
  /// <param name="selectCommandText">sql</param>
  /// <param name="selectConnectionString">constr</param>
  public void BindGrid(string selectCommandText,string selectConnectionString)
  {
   this.selectCommandText=selectCommandText;
   this.selectConnectionString=selectConnectionString;
   BindGrid();
            
  }
  /// <summary>
  /// gridbind
  /// </summary>
  /// <param name="selectCommandText">sql</param>
  /// <param name="cn">cn</param>
  public void BindGrid(string selectCommandText,SqlConnection cn)
  {
   this.selectCommandText=selectCommandText;
   this.selectConnectionString=cn.ConnectionString;
   BindGrid();
  }
  /// <summary>
  /// grid
  /// </summary>
  public void BindGrid()
  {
   if(this.selectCommandText!=null&&this.selectConnectionString!=null)
   {
    adp=new SqlDataAdapter(this.selectCommandText,this.selectConnectionString);
    adp.Fill(ds,"temp");
    view=ds.Tables["temp"].DefaultView;

    if(this.SortField!=null)
    {
     view.Sort=this.SortField+" "+this.SortDirection;
     int sortfieldindex=0;
     for( int  i=0;i<ds.Tables["temp"].Columns.Count;i++)
     {
      if(ds.Tables["temp"].Columns[i].ColumnName==this.SortField)
      {
       sortfieldindex=i;
       break;
      }
     }
     string SortDirectionImg="▲";
     if(this.SortDirection==" DESC")
     {
      SortDirectionImg="▼";

     }
     if(this.SortField!=this.DataKeyField)
     {
      ds.Tables["temp"].Columns[sortfieldindex].ColumnName+=SortDirectionImg;
     }
                   
    }
    Bindtable=ds.Tables["temp"];
    DataRow row=Bindtable.NewRow();
    row[0]="Sum:";               
    for(int i=1;i<Bindtable.Columns.Count;i++)
    {   
     Type t=Bindtable.Columns[i].DataType;
     if(t==typeof(Decimal)||t==typeof(Double)||t==typeof(Int16)||t==typeof(Int32)||t==typeof(Int64)||t==typeof(UInt16)||t==typeof(UInt32)||t==typeof(Int64))
     {
      row[i]=0;
      foreach( DataRow r in Bindtable.Rows)
      {
       try
       {
        row[i]=double.Parse(row[i].ToString())+double.Parse(r[i].ToString());
       }
       catch(Exception et)
       {
                            
       }
                           
      }
     }
    }
    Bindtable.Rows.Add(row);
               
    this.DataSource=view;
    this.DataBind();
               
   }
   else
   {
               
   }
  }
  private void DataGrid_SortCommand(object source, System.Web.UI.WebControls.DataGridSortCommandEventArgs e)
  {
           
   if(    this.SortDirection==" DESC")
   {
    this.SortDirection=" ASC";
   }
   else
   {
    this.SortDirection=" DESC";
   }
           
   this.SortField=e.SortExpression;
   this.SortField=this.SortField.Replace("▲","");
   this.SortField=this.SortField.Replace("▼","");
           
   BindGrid();
  }


  private void DataGrid_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
  {
   try
   {
    string txt="";
    for(int i=0;i<e.Item.Cells.Count;i++)
    {
     //                    e.Item.Cells[i].Wrap=false;
     txt=e.Item.Cells[i].Text.Trim();
   
     //     if(myClass.IsDouble(txt))
     //     {
     //      e.Item.Cells[i].HorizontalAlign=HorizontalAlign.Right;
     //     }
     //     else
     //     {
     if(txt==arritem[i]&&txt!=""&&txt!=null)
     {
      e.Item.Cells[i].Text="";
     }
     else
     {
      arritem[i]=txt;
     }
     //     }
    }
   }
   catch(Exception et)
   {
               
   }

  }


 }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值