2014-04-22 132 views
1

這讓我頭痛了一個小時。我想根據特定單元格是否與輸入數據匹配來刪除一個datagridView行。並將其下的所有其他行轉移(認爲這可能會自動完成,我不知道,我只是不想要任何空白行)。根據單元格內容刪除DataGridViewRow

這是我迄今爲止但是我得到錯誤的「dataGridView1.SelectedRows」出現「未設置爲一個對象的實例對象引用」:

foreach(DataGridViewRow row in dataGridView1.SelectedRows) 
{ 
    if (row.Cells[0].ToString() == "test") 
    { 
     dataGridView1.Rows.Remove(row); 
    } 
} 

感謝您的幫助!

+0

'如果(row.Cells [0] .Value.ToString()== 「測試」)' – TaW

+0

用戶界面是不正確的地方,以把你的業務邏輯。您應該閱讀MVC/MVP模式或使用當前技術(WPF)和MVVM模式。 DataGridView和它的UI相關的子元素與從數據相關的記錄集合中刪除** Data **記錄無關。 –

+0

這可能工作,但它仍然不會讓我超過發生的錯誤。 – user3537381

回答

1

試試這個

foreach (DataGridViewRow item in dataGridView1.SelectedRows) 
    { 
     dataGridView1.Rows.RemoveAt(item.Index); 
    } 
+1

'this.dataGridView1.SelectedRows' =='dataGridView1.SelectedRows' –

+0

我仍然在「this.dataGridView1.SelectedRows」上得到「對象引用未設置爲對象的實例」。 – user3537381

+0

哪個事件...? –

0

怎麼樣一個不錯的擴展方法?

dataGridView1.TrimByCellValue("targetvalue"); 

複製代碼到DataGridViewExtensions.cs

using System.Windows.Forms; 

public static class DataGridViewExtensions 
{ 
    public static void TrimByCellValue(this DataGridView grid, string deleteme) 
    { 
     System.Diagnostics.Trace.WriteLine("DataGridViewExtensions->Trim()"); 
     foreach (DataGridViewRow _row in grid.Rows) 
     { 
      foreach (DataGridViewCell _cell in _row.Cells) 
      { 
       if ((_cell.Value != null) && (!string.IsNullOrEmpty(_cell.Value.ToString()))) 
       { 
        if (_cell.Value.ToString().CompareTo(deleteme) == 0) 
          grid.Rows.Remove(_row); 
       } 
      } 
     } 
    } 
} 
相關問題