LiYingYi

专注于.NET

导航

在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();

posted on 2005-12-28 15:39  小飞侠  阅读(3158)  评论(1编辑  收藏  举报