retrieving number value from datagridview C#

僤鯓⒐⒋嵵緔 提交于 2020-01-06 02:29:11

问题


I am trying to retrieve a numerical value from datagridview. The data type for both the value in the table, and the variable (weeklyTotal), are integer. Also I am trying to cast it into integer. I looked through the whole website for similar problems, and yet none of the solutions were helpful. The error message that I am getting is “when casting form a number, the value must be less than infinity”. I went back to my table more than one time to make sure that I don’t have invalid value.

it's a runtime error and the IDE always point at this line

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

回答1:


Well, that's because

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

won't cast your cell value to the int type. You're just taking the string saying "hey compiler, please treat it as an int type" but it still will be a string type underneath. Use the Convert.ToInt32 method like you did earlier.




回答2:


You may be trying to to an (int) cast on a DBNull value. I'm assuming that you populating the datagridview with data from the database.

Try this:

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


来源:https://stackoverflow.com/questions/24590132/retrieving-number-value-from-datagridview-c-sharp

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!