私はC#でメソッドの計算をしたいが、私はコードを実行すると、値を変換する際にエラーが出る。メッセージのエラーは「オブジェクトはDBNullから他の型にキャストできません」です。エラーはint int bal = 0;で始まります。計算中の変換
private void btn_total_Click(object sender, EventArgs e)
{
//int[] columnData = (from DataGridViewRow row in dataGridView3.Rows where row.Cells[2].FormattedValue.ToString() != string.Empty select Convert.ToInt32(row.Cells[2].FormattedValue)).ToArray();
//lbl_sum.Text = columnData.Sum().ToString();
int sum = 0;
for (int i = 0; i < dataGridView3.Rows.Count; ++i)
{
sum += Convert.ToInt32(dataGridView3.Rows[i].Cells[2].Value);
}
int bal = 0;
for (int i = 0; i < dataGridView3.Rows.Count; ++i)
{
bal = Convert.ToInt32(dataGridView3.Rows[i].Cells[3].Value) - sum;
}
if (bal <0)
{
label_bal_pay.Text = bal.ToString();
}
else
{
lbl_bal.Text = bal.ToString();
}
label_bal_pay.Text = bal.ToString();
lbl_bal.Text = bal.ToString();
lbl_sum.Text = sum.ToString();
}
質問にエラーの完全な説明を追加します。また、コードをデバッグして自分自身が何が間違っているのかを理解しようとすると、悪くはありません。おそらくあなたのエラーは 'dataGridView3.Rows [i] .Cells [3] .Value'は整数ではない値を含むことができます。 –
私はすでに説明を編集しています。列の値は整数です。 @ S.Petrosov –
* grid *で計算を実行しないでください。実際のデータでは、データグリッドでもオブジェクトのリストでも構いません。この場合、文字列を解析する必要はありません。 –