2016-04-12 97 views
0

我需要從我的DataGridView中刪除選定的行。目前我設法執行選擇命令,但我不知道用什麼代碼繼續刪除/刪除選定的行。從DataGridView中刪除選定的行

,我使用的代碼是:

(refTofrPlanMain.dGVPlan.DataSource as DataTable).DefaultView.RowFilter = string.Format("Vodic = '{0}'", searchTBoxW.Text); 
foreach (DataGridViewRow item in refTofrPlanMain.dGVPlan.Rows) 
{ 
    if (item.Visible) 
    { 
     item.Selected = true; 
     break; 
    } 
    //... 
    //Other code 
    //... 
} 

其中: - refTofrPlanMain代表到Form1的引用(我在Form2的工作) - dGVPlan是在DataGridView。

感謝您的支持。

+0

最大的問題是你正在做一個foreach循環,永遠不應該在foreach循環中刪除。更好地反向迭代和刪除像這裏: http://stackoverflow.com/questions/1582285/how-to-remove-elements-from-a-generic-list-while-iterating-over-it – Draken

+0

事情是,我將不斷搜索新的值(精確的值將被過濾掉而沒有雙打),我想每次都刪除它。這會造成問題嗎? –

+0

不是我所知道的,儘管我不確定我是否理解你的問題。唯一的問題是您的列表越大,迭代所用的時間就越長。但無論如何你都在迭代它,所以我沒有看到問題 – Draken

回答

1
(refTofrPlanMain.dGVPlan.DataSource as DataTable).DefaultView.RowFilter = string.Format("Vodic = '{0}'", searchTBoxW.Text); 
for(int i=refTofrPlanMain.dGVPlan.Rows.Count-1; i >=0; i--) 
{ 
    DataGridViewRow item = refTofrPlanMain.dGVPlan.Rows[i]; 
    if (item.Visible && !item.IsCurrentRowDirty()) 
    { 
     refTofrPlanMain.dGVPlan.Rows.RemoveAt(i); 
     break; 
    } 
    //... 
    //Other code 
    //... 
} 
+0

它可能是Items.Count,這裏引用:http:// stackoverflow。 com/questions/838679/row-and-column-count-of-data-grid-in-c-sharp – Draken

+0

看來我收到了一個錯誤:附加信息:未提交的新行不能被刪除。位於和refTofrPlanMain.dGVPlan.Rows.RemoveAt(i)處; –

+0

用戶應該能夠添加新的行到你的'datagridview',因爲它抱怨有一個不完整的行添加? – Draken