C# 如何对datagrid视图的两列执行乘法,并将其分配到第三列?
这是我的代码,我试图显示C# 如何对datagrid视图的两列执行乘法,并将其分配到第三列?,c#,winforms,datagridview,datagridviewcolumn,C#,Winforms,Datagridview,Datagridviewcolumn,这是我的代码,我试图显示Rate*Supply列值的乘法,并将其分配给数据网格视图中的Amount列: try { Query = "Select id,Code,Description,Rate,Cust_Id,Supply,Empty,Amount,Received from Items "; adap = new SQLiteDataAdapter(Query, GlobalVars.conn); ds = new DataSet(); adap.Fill
Rate*Supply
列值的乘法,并将其分配给数据网格视图中的Amount
列:
try
{
Query = "Select id,Code,Description,Rate,Cust_Id,Supply,Empty,Amount,Received from Items ";
adap = new SQLiteDataAdapter(Query, GlobalVars.conn);
ds = new DataSet();
adap.Fill(ds, "Items");
dtgVOuchers.DataSource = ds.Tables[0];
ds.Tables[0].Columns["Amount"].DefaultValue = (ds.Tables[0].Columns["Rate"].DefaultValue) * (ds.Tables[0].Columns["Supply"].DefaultValue); //error
//dtgVOuchers.Rows.Clear();
ds.Tables[0].Clear();
dtgVOuchers.Refresh();
}
有人知道我如何在数据网格视图中实现此功能吗。请帮我更正这个代码。谢谢只需使用查询
Select id,Code,Description,Rate,Cust_Id,Supply,Empty,isnull(Rate,0)*isnull(Supply,0) as [Amount],Received from Items
使用以下代码..运行循环以更新所有行中的“金额”列 注意:虽然这种方法不是首选方法,因为它会影响性能。所以在sql查询中进行这种计算。我不明白为什么不在sql查询中进行MunMultiplication
foreach (DataRow row in ds.Tables[0].Rows)
{
row["Amount"]= Convert.ToDecimal(row["Rate"])* Convert.ToDecimal(row["Supply"]);
ds.Tables[0].AcceptChanges();
}
dtgVOuchers.DataSource = ds.Tables[0];
dtgVOuchers.Refresh();
SQL甚至没有被标记在这个问题上,所以你可能想重新考虑你的答案。我知道,但用户没有提到他想在代码中乘法,而这可以在查询中轻松完成。错误:SQLItemManager:可能的SQL语法错误:选择id、代码、描述、速率、客户id、供应、空、isnull(速率,0)*isnull(供应,0)作为[Amount],从Items接收[接近“isnull”:语法错误]异常名称:NS\U错误\U故障异常消息:组件返回的故障代码:0x80004005(NS\U错误\U故障)[mozIStorageConnection.createStatement]@恐怖。刀锋-哈哈…当你为一种没有标准的语言假设一个答案时,就会发生这种情况。祝你好运!remove isnull只需使用rate*supplyNote:我想在代码中乘法,而不是在查询中。谢谢,因为我没有在数据表中添加列。所以请告诉我如何为这种情况编写代码。在这里,我试着像你的代码一样,但它给出了答案错误:ds.Tables[0]。列[“金额”]。表达式=(ds.Tables[0]。列[“比率”]。表达式)*(ds.Tables[0]。列[“供应”]。表达式);错误:它给出了无效的强制转换异常……对象不能从DBNull强制转换为其他类型……。请帮助删除此错误为您编辑了答案。如果有任何问题,请告诉我。
foreach (DataRow row in ds.Tables[0].Rows)
{
row["Amount"]= Convert.ToDecimal(row["Rate"])* Convert.ToDecimal(row["Supply"]);
ds.Tables[0].AcceptChanges();
}
dtgVOuchers.DataSource = ds.Tables[0];
dtgVOuchers.Refresh();
foreach (DataGridViewRow row in dtgVOuchers.Rows)
{
row.Cells[dtgVOuchers.Columns["Amount"].Index].Value = (Convert.ToDouble(row.Cells[dtgVOuchers.Columns["Rate"].Index].Value) * Convert.ToDouble(row.Cells[dtgVOuchers.Columns["Supply"].Index].Value));
}