从datagridview C#中检索数值

时间:2014-07-05 20:03:24

标签: c# datagridview runtime

我正在尝试从datagridview中检索数值。表中的值和变量(weeklyTotal)的数据类型都是整数。我也试图把它变成整数。我查看了整个网站的类似问题,但没有一个解决方案有用。我得到的错误信息是“当铸造一个数字时,该值必须小于无穷大”。我不止一次回到我的桌子,以确保我没有无效的价值。

它是运行时错误,IDE始终指向此行

weeklyTotal + =(int)dataGridView1.Rows [i] .Cells [1] .Value;

for (int i = 0; i < this.dataGridView1.Rows.Count; i++)
        {
            sdate = dataGridView1.Rows[i].Cells[2].Value.ToString();
            ddate = dataGridView1.Rows[i].Cells[3].Value.ToString();

            if ((weekFirstDay <= Convert.ToInt32(sdate) &&
                Convert.ToInt32(sdate) <= (weekFirstDay + 7))||(weekFirstDay <= `Convert.ToInt32(ddate) &&`
                Convert.ToInt32(ddate) <= (weekFirstDay + 7)))
            {
                dataGridView1.Rows[i].Selected = true;
                dataGridView1.Rows[i].Visible = true;
                weeklyTotal += (int)dataGridView1.Rows[i].Cells[1].Value;

                //weeklyTotalString = dataGridView1.Rows[i].Cells[1].Value.ToString();
                //weeklyTotal += Convert.ToInt32(weeklyTotalString);


            }
            else

3 个答案:

答案 0 :(得分:1)

嗯,那是因为

(int)dataGridView1.Rows[i].Cells[1].Value

不会将您的单元格值转换为int类型。你只是把字符串说成“嘿编译器,请把它当作int类型”,但它仍然是下面的字符串类型。像以前一样使用Convert.ToInt32方法。

答案 1 :(得分:0)

您可能正在尝试对DBNull值进行(int)强制转换。我假设您使用数据库中的数据填充datagridview。

试试这个:

if(dataGridView1.Rows[i].Cells[1].Value != DBNull.Value)
{
    weeklyTotal += (int)dataGridView1.Rows[i].Cells[1].Value;
}

答案 2 :(得分:0)

int num = Convert.ToInt32(dgv.Rows[i].Cells["col_name"].Value);