您的位置:首页 > 其它

一个实现自动求和/合并单元格/排序的DataGrid

2008-05-01 03:44 239 查看
以前在asp很难实现代码重用,asp.net很好的解决了这个问题,以下是我写的DataGrid,继承DataGrid,加进了升降序/全并单元格/自动求和功能,原理很简单,但很好的实现的代码重用.
using System;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
namespace SunService
{
/// <summary>
/// Summary description for DataGrid.
/// </summary>
[DefaultProperty("Text"),
ToolboxData("<{0}:DataGrid runat=server></{0}:DataGrid>")]
public class DataGrid : System.Web.UI.WebControls.DataGrid
{
private string text;
private SqlDataAdapter adp;
private DataSet ds;
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>
/// sql 查询字串
/// </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>
/// 连接字串
/// </summary>
public string selectConnectionString
{
get
{
if(ViewState["selectConnectionString"]==null)
{
return null;
}
else
{
return ViewState["selectConnectionString"].ToString();
}
}
set
{
ViewState["selectConnectionString"]=value;
}
}
public DataTable Bindtable;
public DataGrid()
{
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>
/// GRID绑定
/// </summary>
/// <param name="selectCommandText">查询字串</param>
/// <param name="selectConnectionString">连接字串</param>
public void BindGrid(string selectCommandText,string selectConnectionString)
{
this.selectCommandText=selectCommandText;
this.selectConnectionString=selectConnectionString;
BindGrid();

}
/// <summary>
/// grid绑定
/// </summary>
/// <param name="selectCommandText">查询字串</param>
/// <param name="cn">连接对象</param>
public void BindGrid(string selectCommandText,SqlConnection cn)
{
this.selectCommandText=selectCommandText;
this.selectConnectionString=cn.ConnectionString;
BindGrid();
}
/// <summary>
/// grid绑定,必须先设置 selectCommmandText 及SelectConnectionString 属性
/// </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")
{
共2页: 上一页 1 [2] 下一页
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: