0

我一直在互联网上寻找一些有用的指南,但我发现非 - 我如何在一行中将两个数字相乘,记住该值,然后对 datagridview 中的其余行执行相同操作,并将所有这些值加在一起。并且总摘要显示在textbox. 这两列使用 显示SqlCommand。但是我想在textbox每次更改列pocetdatagridview时更改值(当我在datagridview中更改时,它不会将值插入SQL)。所以我没有犹豫,我在这里和用户 varocarbas 之前的问题中问过你——我非常感谢他花时间制作它。

他想出了这个代码:

 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 是 numeric numeric(15, 2)

非常感谢您抽出宝贵的时间阅读本文,我会对任何评论或指南参考感到满意。

4

1 回答 1

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());
        }


    }
于 2013-07-20T15:01:05.913 回答