我有一个场景,我必须添加不同的单元格值并将其分配给数据行。 我不断收到无法将十进制转换为System.Data.DataRow的错误。 任何投射价值的解决方案。????
添加所有突出显示的项目值并将其分配到上一个总计。
答案 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();