2011999 Ответов: 2

Я не получаю сумму столбца gridview. О ценностях


int sum = 0;
          for (int i=0 ; i < dataGridView1.Rows.Count; ++i)
          {
              sum += Convert.ToInt32(dataGridView1.Rows[i].Cells[3]);
          }

          MessageBox.Show(sum.ToString());


Что я уже пробовал:

int sum = 0;
          for (int i=0 ; i < dataGridView1.Rows.Count; ++i)
          {
              sum += Convert.ToInt32(dataGridView1.Rows[i].Cells[3].Value);
          }

          MessageBox.Show(sum.ToString());

cvogt61457

Какую ценность вы получаете?
Вы уверены, что все ваши значения числовые?
Содержат ли какие-либо значения десятичную точку?
Вы получаете исключение вместо этого?
Вы отлаживаете код и наблюдаете за тем, что происходит?

2011999

числовое значение
все значения являются числовыми
без десятичных знаков
У меня есть исключение
я отлаживаю код и получаю исключение {"ссылка на объект не установлена на экземпляр объекта."}

2 Ответов

Рейтинг:
1

cvogt61457

Моя первая догадка заключается в том, что значения могут содержать нечисловые данные.
Попробовать это

double sum = 0;
for (int i=0 ; i < dataGridView1.Rows.Count; ++i)
{
    double value = 0.0;
    if (double.TryParse(dataGridView1.Rows[i].Cells[3].Value.ToString(), out value))
    {
        sum += value;
    }
}
MessageBox.Show(sum.ToString());


Рейтинг:
1

Maciej Los

Проверить это:

var result = dataGridView1.Rows.OfType<DataGridViewRow>()
    .Where(x=> x.Cells[3]!=null)
    .Sum();;
MessageBox.Show(result.ToString());