我正在尝试从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
答案 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);