Я пытаюсь получить числовое значение из 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
Ну, это потому, что
(int)dataGridView1.Rows[i].Cells[1].Value
не будет передавать значение вашей ячейки в тип int. Вы просто берете строку с надписью "hey compiler, пожалуйста, рассматривайте ее как тип int", но она по-прежнему будет строковым типом внизу. Используйте метод Convert.ToInt32
как и раньше.
Возможно, вы пытаетесь выполнить (int) действие с использованием значения DBNull. Я предполагаю, что вы заполняете datagridview данными из базы данных.
Попробуй это:
if(dataGridView1.Rows[i].Cells[1].Value != DBNull.Value)
{
weeklyTotal += (int)dataGridView1.Rows[i].Cells[1].Value;
}