2014-07-17 66 views
0

所以在我的代碼中,我有一個刪除按鈕,然後單擊時將從網格中刪除選定的行。DataGridView刪除行單元格仍顯示在代碼中,即使從網格中刪除

這似乎在UI級別上工作。

但是,當我不得不從網格中的單元重新驅動我的數據時,不知何故,我剛剛刪除的東西仍然在那裏。我在調試模式下逐行循環時瞭解到了這一點。

我的基算法來自this stackoverflow post的第一個答案。 現在我看了一下關於RemoveAt實際上做什麼的MSDN here 不幸的是,這並不是很有啓發性。

Removes the row at the specified position from the collection. 

這是我的代碼。

private void Delete_Click(object sender, EventArgs e) 
    { 

     if (this.DataView.SelectedRows.Count > 0) 
     { 
      foreach (DataGridViewRow item in DataView.SelectedRows) 
      { 
       DataView.Rows.RemoveAt(item.Index); 

      } 

     } 

     refreshDataFromGrid(); 
    } 

現在,這裏是從什麼是網格

private void refreshDataFromGrid() 
    { 
     //if the rows in the gridview aren't empty copy them over to the String array in d.value 
     for (int i = 0; i < DataView.Rows.Count; i++) 
     { 
      for (int j = 0; j < DataView.Rows[i].Cells.Count; j++) 
      { 
       if (DataView.Rows[i].Cells[j].ToString() != "") 
       { 
        (DataViewParent as STS_Console.MenuItems.MenuItem).d.Value[i, j] = DataView.Rows[i].Cells[j].Value.ToString(); 

       } 
      }                          

     } 

    } 

我將很高興提供的截圖或者根據需要什麼,就問導出數據的部分。

回答

0

顯然,我需要刷新網格。像這樣

  DataView.Refresh(); 

我原本以爲刷新是需要用戶界面。由於用戶界面工作,我很困惑,爲什麼會發生這種情況。但它不僅僅是用於UI,而是用於讀取DataGridView中的任何值。