Member 13153537 Ответов: 1

Как сравнить значение ячейки datagridview пусто в приложении C# windows


У меня есть форма в одном столбце bankname поле со списком,текстовое поле acountno,accounttype, начиная комбобокс ,onedatagridview, и один Addbutton и кнопки "Сохранить".
После загрузки формы Если я выберу bankname из combobox accountno и accounttype
коробки заполняются и показывают соответствующие банковские реквизиты в datagridview fine.Кнопка Добавить используется для Если выбрать банкноту и затем я нажимаю кнопку Добавить новая пустая строка добавляется сверху
datagridview, а затем я ввожу данные в строку и нажимаю кнопку Сохранить.Это прекрасно сохраняет базу данных.Теперь я хочу, чтобы если я добавлю новую пустую строку и нажму кнопку сохранить, то получу сообщение, что значение ячейки пусто, я пробовал разные способы, но это не работает .Пожалуйста кто нибудь
помоги мне в этом.Я получаю оператор ошибки времени компиляции != не могут быть применены операнды ошибки int и system. dbnull

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

<blockquote class="quote"><div class="op">Quote:</div><pre>
<blockquote class="quote"><div class="op">Quote:</div>  


       private void btnsave_Click(object sender, EventArgs e)
        {
            ChqMngrBsns.CheckBook chk = new ChqMngrBsns.CheckBook();

            // Inserting Each Record into database

            foreach (DataGridViewRow row in dgvwChqs.Rows)
            {
                if (bankid > 0)
                {
                    chk.bankid=bankid;


                    if (Convert.ToInt32(row.Cells["Slno"].Value) != DBNull.Value)
                    {

                        chk.Slno = Convert.ToInt32(row.Cells["Slno"].Value);

                    }

                    if (Convert.ToInt32(row.Cells["startno"].Value) != DBNull.Value)
                    {
                        chk.startingno = Convert.ToInt32(row.Cells["startno"].Value);
                    }

                    if (Convert.ToInt32(row.Cells["noofcheques"].Value) != DBNull.Value)
                    {
                        chk.Noofcheques = Convert.ToInt32(row.Cells["noofcheques"].Value);
                    }

                    if (Convert.ToInt32(row.Cells["endingno"].Value) != DBNull.Value)
                    {

                        chk.Endingno = Convert.ToInt32(row.Cells["endingno"].Value);
                    }

                    if (Convert.ToBoolean(row.Cells["Status"].Value == DBNull.Value))
                    {
                        chk.status = false;

                    }

                    else if (Convert.ToBoolean(row.Cells["Status"].Value != DBNull.Value))
                    {
                        chk.status = true;

                    }
                    chk.SaveData(true);

                }
            }
            //Clearing the datatable
            cmbbankname.SelectedIndex = 0;
            txtAcntno.Text = "";
            cmbAcntype.SelectedIndex = 0;
            dts.Clear();
            //LoadDataGridView();
        }</blockquote>

CHill60

Не конвертируйте в int перед сравнением с DBNull.Ценность. Это ячейка, которую вы проверяете на null, а не значение внутри ячейки.
Также избегайте использования Convert.To ... используйте методы Parse или TryParse для каждого типа.

Member 13153537

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

Member 13153537

или дайте мне какую-нибудь рекомендацию.

1 Ответов

Рейтинг:
5

CHill60

Что-то вроде этого должно помочь вам преодолеть проблему (предупреждение-непроверено)

int atry;
if (row.Cells["Slno"].Value != null)
{
    if (int.TryParse(row.Cells["Slno"].Value.ToString(), out atry)) 
    {
        chk.Slno = atry;
    }
}

if (row.Cells["startno"].Value != null)
{
    if (int.TryParse(row.Cells["startno"].Value.ToString(), out atry)) 
    {
        chk.startingno = atry;
    }
}

if (row.Cells["noofcheques"].Value != null)
{
    if (int.TryParse(row.Cells["noofcheques"].Value.ToString(), out atry)) 
    {
        chk.Noofcheques = atry;
    }
}

if (row.Cells["endingno"].Value != null)
{
    if (int.TryParse(row.Cells["endingno"].Value.ToString(), out atry)) 
    {
        chk.Endingno = atry;
    }
}


if (row.Cells["Status"].Value != null)
{
    bool abtry;
    if (bool.TryParse(row.Cells["Status"].Value.ToString(), out abtry))
    {
        chk.status = abtry;
    }
    else
    {
        chk.status = false;
    }
}


Member 13153537

Хорошо, спасибо за ваш ответ.Если это сработает. Я приму ответ.