2013-07-20 75 views
0

我一直在环顾网上寻找一些有用的指南,但我发现非 - 我如何在行中多个两个数字,记住该值,然后对其余行进行相同操作datagridview和所有这些值相加在一起。并在textbox中总显示。这两列使用SqlCommand显示。但我想改变textbox中的值,每次在列pocet datagridview中进行更改(当我在datagridview中进行更改时,它不会将值插入到SQL中)。所以我毫不犹豫地在前面的问题here和用户varocarbas问你 - 我非常感谢他花费的时间。在2个datagridview列乘以数据

他想出了这个代码:

void calculateProductTwoColumns(int castkaIndex, int pocetIndex, int tot_rows) 
    { 
     try 
     { 
      double[] outVals = new double[tot_rows + 1]; 
      int curRow = 0; 
      foreach (DataGridViewRow row in dtg_ksluzby.Rows) 
      { 
       curRow = curRow + 1; 
       outVals[curRow] = (double)row.Cells[castkaIndex].Value * (double)row.Cells[pocetIndex].Value; 

       kpriplac.Text = outVals.ToString(); 
      } 
     } 
     catch (Exception ex) 
     { 
      MessageBox.Show("" + ex.Message.ToString()); 
     } 


    } 

于是,我就“完善”它,使其工作就像我的愿望,但我想我有点搞砸了。我想在每一行中添加pocet(dgv index 3)和cena(dgv index 2)。因此,我调用这个方法是这样的:

calculateProductTwoColumns(2, 3, 4); 

当我开始调试,它说:Specified cast is not valid.我试着用断点来调试,但我找不到,我没有犯错。

pocet是int和castka是数值数值(15,2)

谢谢你这么多你的时间读这篇文章,我会很高兴与任何comentary或参考指南。

+0

的DataGridView是数据绑定或行手动添加? –

+0

@SriramSakthivel与SqlCommand,谢谢你的时间。 –

+0

找不到你。使用DataSource? –

回答

1

试图改变你的源如下所示:

outVals[curRow] = Convert.ToDouble(row.Cells[castkaIndex].Value) * Convert.ToDouble(row.Cells[pocetIndex].Value); 

编辑:

我建议是这样的:

void calculateProductTwoColumns(int castkaIndex, int pocetIndex, int tot_rows) 
    { 
     try 
     { 
      double outVal = 0; 
      foreach (DataGridViewRow row in dtg_ksluzby.Rows) 
      { 
       outVal = outVal + Convert.ToDouble(row.Cells[castkaIndex].Value) * Convert.ToDouble(row.Cells[pocetIndex].Value); 
      } 

      kpriplac.Text = outVal.ToString(); 
     } 
     catch (Exception ex) 
     { 
      MessageBox.Show("" + ex.Message.ToString()); 
     } 


    } 
+0

你好,谢谢你的回答,至少这个代码在文本框中显示了一些东西! - System.Double []。它会给出错误 - 索引超出了数组的范围,我错误的地方在哪里? –

+0

我编辑了我的答案。代码中的问题是,您将整个数组转换为字符串。这导致只给你类型名称。你也不需要一个数组,因为你只是将所有事情总结为一个值。 –

+0

非常感谢你的时间。 – Marek