2016-10-04 149 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); 

希望這會有所幫助。