When ever i try to delete a selected row from the WPF Datagrid it Deletes the row properly but "dataGrid1_SelectionChanged" Event raises an exception that Object Reference is not set to instance of Object. And i am not able to handle this situation after Deletion of row.
private void dataGrid1_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
OrignalSelectedRow = null;
DataGrid gd = (DataGrid)sender;
DataRowView rowSelected = dataGrid1.SelectedItem as DataRowView;
int batchnumber = Convert.ToInt32(rowSelected["b_id"]); //This line is raising Exception
//int batchnumber = batchidval;
label16.Content = batchnumber;
}
Row Deletion code is Below
private void button6_Click(object sender, RoutedEventArgs e)
{
//Deletion of Row
DataRowView rowSelected = dataGrid1.SelectedItem as DataRowView;
int row_qty = Convert.ToInt32(rowSelected["qty"]);
int row_batch_num = Convert.ToInt32(rowSelected["b_id"]);
//label16.Content = row_batch_num;
label16.Content = row_qty;
con.Open();
try
{
SqlCommand command = new SqlCommand("update batch set sold_qty=sold_qty-@qty2, left_qty=left_qty+@qty2 where id=@id2", con);
command.Parameters.AddWithValue("@qty2", row_qty);
command.Parameters.AddWithValue("@id2", row_batch_num);
rexe = command.ExecuteNonQuery();
}
catch(Exception ex)
{
MessageBox.Show("Updation Error "+ex.ToString());
}
try
{
SqlCommand delcommand = new SqlCommand("DELETE FROM invoice WHERE sr#='" + rowSelected["sr#"] + "'", con);
//con.Open();
delcommand.ExecuteNonQuery();
con.Close();
}
catch(Exception ex)
{
MessageBox.Show("Deletion Error " + ex.ToString());
}
if(rowSelected!=null)
{
dt_1.Rows.Remove(rowSelected.Row); //dt_1 is a DataTable
}
dataGrid1.SelectedItem = 0;
}