|
问题遇到的现象和发生背景
winform上的datagridview由数据库查询返回结果动态生成,增加列后,datagridview.rows[rowi].cells["列名"].value 的操作就会触发:“ArgumentException”未被处理的异常.不能找到名为"列名"的列.”异常。但如果用 datagridview.rows[rowi].cells[j].value 则不会报错。
问题相关代码,请勿粘贴截图
生成的表格,第114列列名是“六号螺栓数量”,第115列列名是“六号螺栓总额”;pautbasefee是从数据库参数表中查询出来的“六号螺栓单价”。
Gridhtwtxm.Rows[rowi].Cells[“六号螺栓总额”].Value = Math.Round(pautbasefee * Convert.ToDouble(Gridhtwtxm.Rows[rowi].Cells[“六号螺栓数量”].Value) * pautcoef, 2);
运行结果及报错内容
“ArgumentException”未被处理的异常.不能找到名为"六号螺栓总额"的列.”
我的解答思路和尝试过的方法
1、用execl表格导入生成的datagridview表格,datagridview.rows[rowi].cells["六号螺栓数量"].value,datagridview.rows[rowi].cells["六号螺栓总额"].value可以正常使用。
2、修改为:Gridhtwtxm.Rows[rowi].Cells[114].Value = Math.Round(pautbasefee * Convert.ToDouble(Gridhtwtxm.Rows[rowi].Cells[113].Value) * pautcoef, 2);结果也正常。
我想要达到的结果
用数据库查询结果动态生成datagridview表格后,可以用列名操作表格中的数据,这样就在同一个winform生成不同的表格,不用受限于固定表格。
Gridhtwtxm.Rows[rowi].Cells[“六号螺栓总额”].Value = Math.Round(pautbasefee * Convert.ToDouble(Gridhtwtxm.Rows[rowi].Cells[“六号螺栓数量”].Value) * pautcoef, 2); |
|