DataSet表达式列重新评估

时间:2011-06-09 18:56:30

标签: c# .net strongly-typed-dataset

我有一个强类型数据集,其中包含由其expression属性计算的readonly列。计算列为totalAmountDue,表达式为( totalAmountBilledColumn - totalAmountPaidColumn )。问题是当两个计算列中的任何一个发生更改时,我无法获得计算列来重新评估。

有谁知道如何强制数据集重新评估带表达式的列?

感谢。

1 个答案:

答案 0 :(得分:2)

刚刚遇到这个。关于表达式的有趣之处在于,在将行添加到表之前,它们不会进行求值。一旦将一行添加到表中,它就会起作用。这是一个例子。

        DataTable table = new DataTable();
        table.Columns.Add("debit", typeof (double)).DefaultValue = 0;
        table.Columns.Add("credit", typeof(double)).DefaultValue = 0;
        table.Columns.Add("net", typeof(double),"debit - credit");

        DataRow row = table.NewRow();

        Console.WriteLine("First: {0}",row["net"]); // won't work
        row["debit"] = 500;
        Console.WriteLine("Sec: {0}", row["net"]); // won't work
        row["credit"] = 0;
        Console.WriteLine("Thr: {0}", row["net"]); // won't work

        table.Rows.Add(row);
        Console.WriteLine(row["net"]); // works