2016-10-04 155 views
0

我想通过使用某个按钮的功能从网格中删除特定的gridview记录,我似乎得到一个“NullReferenceException是未处理的错误”每次我选择一个记录是除去。 (记录在“编辑”状态。通过按钮c去除gridview记录#

Form Design Actual Error

这些按钮做工精细当我添加了一套新的GridView的记录,我可以添加和删除它们,因为我想,这些错误开始雨后春笋般冒出来当我编辑记录

的删除按钮代码:

int nCurrentRow = -1; 
     nCurrentRow = Convert.ToInt16(grdWorkers.CurrentCell.RowIndex.ToString()); 
     if (nCurrentRow != -1) 
     { 
      DataRow dr; 
      dr = dsDetail1.Tables["Workers2"].Rows[nCurrentRow]; 
      dsDetail1.Tables["Workers2"].Rows.Remove(dr); 
     } 


     grdWorkers.DataSource = null; 
     grdWorkers.DataSource = dsDetail1.Tables["Workers2"]; 
     grdWorkers.Columns[0].Visible = false; 
+0

将此更改为'nCurrentRow = grdWorkers.CurrentCell.RowIndex;'行索引已经返回int。当你点击编辑状态时,你是否再次填充gridview?它必须刷新,所以数据立即更新 –

+0

我猜'dsDetail1.Tables'给出错误。我对吗? – Berkay

+0

__不要调用'DataGridView''GridView'或'DataGrid',反之亦然!这是错误的和混乱的,因为这些是不同的控制。总是用__right__的名字打电话给他们! – TaW

回答

0

我可能是错在这里,但它看起来像你所得到的来自DataGrid或DatagridView的索引(我不确定你使用了哪个。我正在使用DataGridView)。您的代码:

nCurrentRow = Convert.ToInt16(grdWorkers.CurrentCell.RowIndex.ToString()); 

这将返回DataGridView中所选单元格的索引。然后在下面的那个你在DataTable上使用该索引。

DataRow dr; 
dr = dsDetail1.Tables["Workers2"].Rows[nCurrentRow]; 
dsDetail1.Tables["Workers2"].Rows.Remove(dr); 

如果你的DataGridView有一个它出现的DataSource,那么这两个索引不一定是相同的。以下是我用来获取DataGridView中所选项目的DataTable的索引。

DataRowView drv = (DataRowView)dataGridView1.CurrentRow.DataBoundItem; 
DataRow dr = drv.Row; 
int indexToTable = dgvDataTable.Table.Rows.IndexOf(dr); 

希望这会有所帮助。