0

私はいくつかの有用なガイドをインターネットで探していましたが、2つの数字を連続して倍数にし、その値を覚えてから、datagridviewの残りの行に対して同じことを行い、それらすべての値を合計する方法はありません. そして、合計サマリーが に表示されtextboxます。これらの 2 つの列は、 を使用して表示されますSqlCommandtextboxしかし、列datagridviewに変更が加えられるたびに値を変更したいと思いpocetます(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(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 に答える