我正在使用一个应用程序,用户可以将数量和价格相乘,并使用列表达式将结果显示在第三列中 我使用的代码如下所示:
DataTable dt = new DataTable("dtList");
DataTable dataTable = new DataTable();//Created a new DataTable
DataColumn dc = new DataColumn();
dc.DataType = System.Type.GetType("System.Decimal");
dc.ColumnName = "Price";
DataColumn dc1 = new DataColumn();
dc1.DataType = System.Type.GetType("System.Decimal");
dc1.ColumnName = "qty";
DataColumn dc2 = new DataColumn();
dc2.DataType = System.Type.GetType("System.Decimal");
dc2.ColumnName = "Total";
dc2.Expression = "Price * qty";
dataTable.Columns.Add(dc);//Add them to the DataTable
dataTable.Columns.Add(dc1);
dataTable.Columns.Add(dc2);
object sumObject;
sumObject = dt.Compute("Sum(Total)", "");
I used this code to sum column Total, and show the result in a Text Box, but it's showing an error like this: "Cannot find column [Total]".
我的问题是,我可以更改,使此代码工作,每次用户更改数量时也会自动求和。 对不起我的英语和我的代码中的错误我是WPF的新手
答案 0 :(得分:1)
快速检查你的代码我可以看到一件事。你定义一个名为dt的DataTable,然后你尝试计算列“dt.Total”,但你从来没有在你的dt中定义过一列。
尝试更改您的:
sumObject = dt.Compute(“Sum(Total)”,“”);
到
sumObject = dataTable.Compute(“Sum(Total)”,“”);
编辑:顺便说一下,如果你这样做:
dataTable = new DataTable();//Created a new DataTable
DataColumn dc = new DataColumn();
dc.DataType = System.Type.GetType("System.Decimal");
dc.ColumnName = "Price";
DataColumn dc1 = new DataColumn();
dc1.DataType = System.Type.GetType("System.Decimal");
dc1.ColumnName = "qty";
DataColumn dc2 = new DataColumn();
dc2.DataType = System.Type.GetType("System.Decimal");
dc2.ColumnName = "Total";
dc2.DefaultValue = 5;
dc2.Expression = "Price * qty";
dataTable.Columns.Add(dc);//Add them to the DataTable
dataTable.Columns.Add(dc1);
dataTable.Columns.Add(dc2);
您的第三列已经具有“price * qty”的值。 如果要显示所有直流总计列的总和,请使用:
object sumObject = dataTable.Compute("Sum(Total)", "");
然后
yourTextbox.Text = sumObject.ToString();