chaitanya556 Ответов: 2

Gridview checkbox is giving object cannot be cast from dbnull to other types if checkbox is not checked C#


Привет, я использую следующий код для копирования GridView dataschema и проверенных строк в отдельную таблицу.
Он работает очень хорошо, когда все строки проверены. но дает ошибку
object cannot be cast from dbnull to other types
когда я оставил несколько строк непроверенными в самом начале.

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

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

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

var bindingsource = (BindingSource)dgv_summary.DataSource;
                DataTable tbl = ((DataTable)bindingsource.DataSource).Clone();
                var rows = dgv_summary.Rows.OfType<DataGridViewRow>()
                                        .Where(r => Convert.ToBoolean(r.Cells[" "].Value))
                                        .Select(r => ((DataRowView)r.DataBoundItem).Row);
                foreach (var row in rows)
                {
                    tbl.ImportRow(row);
                }
                DataTable dt_Cust = tbl.DefaultView.ToTable(true, "GL_ACNO");

2 Ответов

Рейтинг:
17

Karthik_Mahalingam

попробуйте кастинг в методе

var rows = dgv_summary.Rows.OfType<DataGridViewRow>()
                                   .Where(r =>  GetBoolValue( r.Cells[" "].Value))
                                   .Select(r => ((DataRowView)r.DataBoundItem).Row);


private bool GetBoolValue(object value) {
        string val = Convert.ToString(value);
        bool returnValue ;
        Boolean.TryParse(val, out returnValue);
        return returnValue;
    }


chaitanya556

Огромное спасибо... Он Работал :-)

Karthik_Mahalingam

добро пожаловать

Рейтинг:
0

Richard MacCutchan

Скорее всего это утверждение:

r => Convert.ToBoolean(r.Cells[" "].Value)

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


chaitanya556

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

Спасибо

Richard MacCutchan

Просто проверьте значение, чтобы увидеть, является ли оно dbnull.