【发布时间】:2010-10-06 06:59:30
【问题描述】:
dataGridview 第一行列名称数量不返回值,因为插入了值。
为了同学们的方便,我画了一张表格,因为它有助于更好地回答。
我在dataGridview上的表格如下:
private void Form1_Load(object sender, EventArgs e)
{
DataTable dt = new DataTable();
dt.Columns.Add("name",typeof(string));
dt.Columns.Add("amount",typeof(decimal));
dataGridView1.DataSource = dt;
dataGridView1.Columns[1].DefaultCellStyle.Format = "f2";
}
现在我准备了表格,我的主要代码如下:
private void dataGridView1_RowLeave(object sender, DataGridViewCellEventArgs e)
{
decimal sum = 0.00m;
for (int i = 0; i < dataGridView1.Rows.Count-1; i++)
{
sum = sum + Convert.ToDecimal(dataGridView1[1, i].Value);
textBox1.Text = sum.ToString("f2");
}
}
上面的代码抛出“Object Cannot cast from DBNull to other types”之类的错误。即使有值。
现在看看另一个代码:
private void dataGridView1_RowLeave(object sender, DataGridViewCellEventArgs e)
{
decimal sum = 0.00m;
for (int i = 0; i < dataGridView1.Rows.Count-1; i++)
{
if (dataGridView1[1, i].Value != DBNull.Value)
{
sum = sum + Convert.ToDecimal(dataGridView1[1, i].Value);
textBox1.Text = sum.ToString("f2");
}
}
}
现在这段代码没有抛出任何错误,但仍然存在问题。问题是当我在 amount 列上输入值时,它看起来像是跳过了第一行列名 amount 的值。
例如......
我在列名金额上输入的值如下:
1st Row column amount values is = 12
2nd Row column amount values is = 12
3rd Row column amount values is = 12
现在 textbox1 中显示的总数 = 24,而实际总数 = 36。
编码有问题表明dataGridview的第一行的列值不被接受。
【问题讨论】:
标签: c#