更改datatable表达式列的值

时间:2014-12-01 13:00:01

标签: c# datatable

我需要在数据表中将列的值设置为datatable中的其他两列的总和。我尝试过表达式列并且工作正常。但问题是表达式列的值不会始终更新。假设A,B是数据表中的两列,这两列的总和应该显示在列'C'中。当B的值改变时然后列'C'的值也会改变。但是当'A'列改变时

 DataTable dt1 = new DataTable();
 dt1.Columns.Add("A", typeof(decimal));
 dt1.Columns.Add("B", typeof(decimal));
 dt1.Columns.Add("C", typeof(decimal), "A+B");
 myGridView.Datasource = dt1;

2 个答案:

答案 0 :(得分:1)

这是一个有根据的猜测,但没有看到你的代码,但似乎你使用Compute然后你很可能不应该使用表达式列,而不是你应该使用DataColumn ...来自{ {3}}

"如果必须对两列或更多列执行操作,则应创建DataColumn,将其Expression属性设置为适当的表达式,并在结果列上使用聚合表达式。在这种情况下,给定一个名为" total"的DataColumn,并将Expression属性设置为:" Quantity * UnitPrice"

答案 1 :(得分:0)

应该是这样的:

DataTable dt1 = new DataTable();
dt1.Columns.Add("A", typeof(decimal));
dt1.Columns.Add("B", typeof(decimal));
dt1.Columns.Add("C", typeof(decimal));
foreach (DataRow dr in dt1.Rows)
        {
            dr[2] = Convert.ToDecimal(dr[0]) + Convert.ToDecimal(dr[1]);
        }
myGridView.Datasource = dt1;