Нулевое значение в DataGridView - PullRequest
0 голосов
/ 05 марта 2012

Как я могу проверить нулевое значение ячейки в DataGridView в C #?Я использовал DBNull для проверки, но он не работает, и я получаю сообщение об ошибке «Ссылка на объект не установлена ​​для экземпляра объекта».Я использую VS2010.

Кто-нибудь может мне помочь?

DateGridView имеет следующие свойства: Имя: dgTelFax AllowUserToAddRows: True AllowUserToDeleteRows: True

Код, который у меня есть в настоящее время, является:

            DataSet objDSTelephone = new DataSet();
            DataTable objDTTelephone = objDSTelephone.Tables.Add();

            string strTelephoneID = "";
            string strTelephone = "";

            int intRecTel = dgTelFax.Rows.Count;
            if (intRecTel > 0)
            {
                //-- Add columns to the data table
                objDTTelephone.Columns.Add("id", typeof(string));
                objDTTelephone.Columns.Add("telephone", typeof(string));

                for (int i2 = 0; i2 <= intRecTel - 1; i2++)
                {
                    strTelephoneID = (!DBNull.Value.Equals(dgTelFax.Rows[i2].Cells[0].Value)) ? dgTelFax.Rows[i2].Cells[0].Value.ToString() : "";
                    strTelephone = (!DBNull.Value.Equals(dgTelFax.Rows[i2].Cells[2].Value)) ? dgTelFax.Rows[i2].Cells[2].Value.ToString() : "";
                    objDTTelephone.Rows.Add(strTelephoneID, strTelephone);
                }
            }

Заранее спасибо !!

Ответы [ 2 ]

1 голос
/ 05 марта 2012

В этом случае ваш dgTelFax не содержит DBNull.Value, а просто null.Чтобы проверить это, вы должны написать:

strTelephoneID = (dgTelFax.Rows[i2].Cells[0].Value ?? string.Empty).ToString();
strTelephone = (dgTelFax.Rows[i2].Cells[2].Value ?? string.Empty).ToString();

Если тип столбца в DataSource является строковым, было бы достаточно сказать:

strTelephoneID = (string)dgTelFax.Rows[i2].Cells[0].Value;
strTelephone = (string)dgTelFax.Rows[i2].Cells[2].Value;

Но вопрос - почему бы неВы связываете датагрид с objDTTelephone?Тогда вам не нужно будет передавать данные самостоятельно.

0 голосов
/ 20 января 2016

Прежде чем получить значение ячейки, проверьте значение ячейки:

if(!string.IsNullOrEmpty(dgTelFax.Rows[2].Cells[0].Value) {
    strTelephoneID = dgTelFax.Rows[2].Cells[0].Value.Tostring();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...