Как я могу получить значения строк DataGridView и сохранить в переменных? - PullRequest
5 голосов
/ 04 августа 2011

Как я могу циклически проходить по строкам DataGridView за раз (у меня есть 2 столбца), а затем сохранять эти 2 столбца в переменной, которую я буду использовать в качестве параметра для запроса SQL?

  foreach (DataGridViewRow Datarow in contentTable_grd.Rows)
            {
                contentValue1 = Datarow.Cells[0].Value.ToString();
                contentValue2 = Datarow.Cells[1].Value.ToString();

                SqlParameter param4 = new SqlParameter("@contentTableValue1", contentValue1);
                SqlParameter param5 = new SqlParameter("@contentTableValue2", contentValue2);

            }

Я получаю эту ошибку при использовании приведенного выше кода -

Ссылка на объект не установлена ​​для экземпляра объекта.

Ответы [ 3 ]

5 голосов
/ 04 августа 2011

Наиболее вероятная проблема заключается в том, что одна или обе ячейки, на которые вы ссылаетесь, содержат нулевое значение, и при попытке вызвать ToString() для такой ячейки возникает исключение.

Одно из решенийиспользовать ??оператор возвращает значение по умолчанию для вашего параметра, если значение ячейки равно нулю:

contentValue1 = Datarow.Cells[0].Value ?? string.Empty;
contentValue2 = Datarow.Cells[1].Value ?? string.Empty;

Этот код будет возвращать пустую строку, если значение ячейки равно нулю;Вы можете использовать другое значение по умолчанию.

3 голосов
/ 04 августа 2011

Нашел проблему, мне нужен был оператор if для предотвращения прохождения пустых ячеек

    foreach (DataGridViewRow Datarow in contentTable_grd.Rows)
    {
        if (Datarow.Cells[0].Value != null && Datarow.Cells[1].Value != null)
        {
            contentValue1 = Datarow.Cells[0].Value.ToString();
            contentValue2 = Datarow.Cells[1].Value.ToString();
            MessageBox.Show(contentValue1);
            MessageBox.Show(contentValue2);
        }

    }
1 голос
/ 04 августа 2011

Что такое contentValue1?

Не уверен насчет c # - может ли он неявно ввести переменную?Возможно, попробуйте что-то вроде string contentvalue1 = ...

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

string contentvalue1 = CTYPE(DataRow.FindControl("myTextbox"),textbox).text

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...