2012-02-20 2 views
0

My DataGridView привязан к результату запроса базы данных через SqlDataReader, и когда я тестирую значение ячейки для null, я получаю неожиданные результаты.Проверьте, являются ли данные в ячейке datagridview нулевыми

Мой код-то вроде этого:

SqlConnection con = new SqlConnection(
    "Data Source = .;Initial Catalog = SAHS;integrated security = true"); 
con.Open(); 
SqlCommand cmd3 = new SqlCommand(
    "select Status from vw_stdtfeedetail 
    where Std= 6 and Div ='B' and name='bbkk' and mnthname ='June'", con); 
SqlDataReader dr = cmd3.ExecuteReader(); 
BindingSource bs = new BindingSource(); 
bs.DataSource = dr; 
dataGridView3.DataSource = bs; 
this.monthFeeTableAdapter.Fill(this.sAHSDataSet4.MonthFee); 
if (dataGridView3.CurrentCell.Value == null) 
{ 
    MessageBox.Show("Pending"); 
} 
else 
{ 
    MessageBox.Show("Already Paid"); 
} 

Я получаю выход Уже платный даже если значение из базы данных нуля.

+1

при отладке, что делает значение шоу, как? – peroija

+0

@StingyJack - Это полная противоположность тому, что предполагает OP. Он предполагает, что NULL означает, что он не оплачен. Это может быть столбец с указанием даты, когда что-то было оплачено, поэтому NULL - идеальный способ указать, что дата не указана. – GarethD

+0

Да, я ясно получил случай в понедельник. – StingyJack

ответ

3

Попробуйте использовать DBNull.Value вместо null

if (dataGridView3.CurrentCell.Value == DBNull.Value) 
{ 
    MessageBox.Show("Pending"); 
} 
else 
{ 
    MessageBox.Show("Already Paid"); 
} 
+0

ya ive сделал это .. его правильно использовать DBNull.Value. – HMcompfreak

+0

@HMcompfreak Если это правильный ответ, отметьте его как правильный ответ, чтобы удалить его из кучи вопросов «Без ответа». Приветствия. – GarethD

Смежные вопросы