【问题标题】:Changing the value of datatable expression column更改数据表表达式列的值
【发布时间】:2014-12-01 13:00:01
【问题描述】:

我需要将数据表中的列值设置为数据表中其他两列的总和。我尝试了表达式列并且工作正常。但问题是表达式列的值并不总是更新。假设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;

【问题讨论】:

  • 你能把你的一些代码放在这里吗?在没有看到的情况下,很难准确地猜测出哪里出错了。
  • 似乎,正如我在我的回答中发布的那样,您错误地使用了表达式列,我相信它仅用于一列,而不是两列。对于两个,您应该使用 DataColumn...“获取或设置用于过滤行、计算列中的值或创建聚合列的表达式。”

标签: c# datatable


【解决方案1】:

这是一个有根据的猜测,没有看到您的代码,但似乎您使用的是 Compute,那么您很可能不应该为此使用表达式列,而应该使用 DataColumn...取自here

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

【讨论】:

  • 问题已更新为示例代码。请看一下。谢谢
【解决方案2】:

应该是这样的:

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;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-15
    • 1970-01-01
    • 2022-01-02
    • 1970-01-01
    相关资源
    最近更新 更多