在DataTable中创建计算列
我们知道DataTable是内存中的一个表,可以用DataColumn和DataRow来构造一个DataTable,并且用DataColumn的Expression属性来创建计算列。
(1)创建计算列,该列的值是其它列的计算值.如:
DataSet1.Tables("myTable").Columns("Price").Expression = "UnitPrice * 0.086".
(2)创建聚合列,聚合基于 DataTable 中的整个行集执行操作.如:
DataSet1.Tables("myTable").Columns("Total").Expression = "Sum(Price)".
注意:在创建时,使用 列对象的ColumnName属性来引用列。而不是Caption属性来引用列。
示例:以下创建了一个DataTable,有4个列.
//自增列
DataTable dt=new DataTable("mytable"); //创建一个名为mytable的DataTable对象形
DataColumn dc=new DataColumn(); //创建一个列对象
dc.DataType=System.Type.GetType("System.Int32"); //指定该列的数据类型
dc.AutoIncrement=true; //该列为自动增涨列
dc.AutoIncrementSeed=1; //初始值
dc.AutoIncrementStep=2; //增量
dc.Caption="id"; //设置列的标题
dc.ColumnName="序号"; //设置 列集合对象中的列的名称,datagrid中显示该列名.
dc.Unique=true; //为此列创建唯一性约
dc.AllowDBNull=false; //不允许为空
dt.Columns.Add(dc); //将该列对象加入到表mytable的列集合中
//普通列
DataColumn dc1=new DataColumn();
dc1.DataType = System.Type.GetType("System.Double");
dc1.AllowDBNull = false;
dc1.Caption = "price";
dc1.ColumnName = "价格";
dc1.DefaultValue = 25;
dt.Columns.Add(dc1);
//计算列
DataColumn dc2=new DataColumn();
dc2.DataType=System.Type.GetType("System.Double");
dc2.Caption="add";
dc2.ColumnName="两个列的和";
dc2.Expression="序号+价格"; //注意是用ColumnName属性引用上面两个列
dt.Columns.Add(dc2);
//聚和列
DataColumn dc3=new DataColumn();
dc3.DataType=System.Type.GetType("System.Int32");
dc3.ColumnName="聚和价格";
dc3.Expression="sum(价格)";
dt.Columns.Add(dc3);
//创建行
DataRow dr;
for(int i=0;i<10;i++)
{
dr=dt.NewRow();
dr["价格"]=i+1;
dt.Rows.Add(dr);
}
DataGrid1.DataSource=dt;
DataGrid1.DataBind();