如何将datagridview的不同单元格值相加并将值赋给datarow

时间:2014-02-23 12:40:34

标签: c# winforms datagridview

我有一个场景,我必须添加不同的单元格值并将其分配给数据行。 我不断收到无法将十进制转换为System.Data.DataRow的错误。 任何投射价值的解决方案。????

enter image description here

添加所有突出显示的项目值并将其分配到上一个总计。

4 个答案:

答案 0 :(得分:0)

首先,您需要从最后一行代码中删除显式DataRow强制转换。您需要为引用的数据行中的字段指定一个十进制值dtRow,目前您正在尝试将添加结果转换为数据行并将其分配给字段。

答案 1 :(得分:0)

图像的最后一行显示了将十进制加法结果强制转换为DataRow,这显然是不可能的。使用DataRow索引器意味着读取或写入索引的单元格中包含的值,因此无需将十进制加法转换为DataRow。这可能是你的错误。只需将演员表移至(DataRow)

即可
dtRow["Total"] = Convert.ToDecimal(...) + Convert.ToDecimal(...)

但是我建议使用DataColumn.Expression属性

将计算列添加到数据源中
dataTable.Columns.Add("Total", typeof(decimal), "STD_MONTHLYFEE + EXAMINATIONFEE + .....");

这样,当您向数据表

添加新行时,将自动执行该操作

答案 2 :(得分:0)

您无法将decimal值转换为DataRow。这会导致施法错误。

只需将值直接指定给所需的列:

dtRow["Total"] = Convert.ToDecimal(row.Cells[9].Value) + ...

答案 3 :(得分:0)

您可以先保存要求和的列的索引。然后使用linq对值进行求和,如下所示:

var list = new List<int> { 9, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25 };

dtRow["Total"] = list.Select(i => Decimal.Parse(row.Cells[i].Value.ToString())).Sum();