【问题标题】:Delete rows which has a specific value from DataGridView C#从 DataGridView C# 中删除具有特定值的行
【发布时间】:2014-07-10 11:03:48
【问题描述】:
我有一个 WinForm DataGridView,如下所示,我需要删除列中具有特定值的行
在这种情况下,我使用文本字段输入代码,然后单击“删除”列值下具有 ITM-000001 的所有行。我不知道从哪里开始。
private void deleteClick(object sender, EventArgs e)
{
String code = txtCode.Text;
// CODE HERE
}
【问题讨论】:
标签:
c#
winforms
datagridview
【解决方案1】:
不一定比 Matthew 的解决方案更好甚至更简单;只是我有时觉得有用的另一种方法:
List<DataGridViewRow> RowsToDelete = new List<DataGridViewRow>();
foreach (DataGridViewRow row in dataGridView1.Rows)
if ( row.Cells[0].Value != null &&
row.Cells[0].Value.ToString() == "TTTT") RowsToDelete.Add(row);
foreach (DataGridViewRow row in RowsToDelete) dataGridView1.Rows.Remove(row);
RowsToDelete.Clear();
这样,您可以在实际删除它们之前将列表用作缓冲区或给出命中数。
我也喜欢他对string.Equals 的使用,并在这里以不同的方式使用它只是为了好玩..
【解决方案2】:
我已经很久没有用 Windows 窗体做任何事情了(哦,好日子),如果这有点不对劲,请见谅,但你应该能够通过类似...
for(int v = 0; v < dataGrid1.Rows.Count; v++)
{
if(string.Equals(dataGrid1[0, v].Value as string, "ITM-000001"))
{
dataGrid1.Rows.RemoveAt(v);
v--; // this just got messy. But you see my point.
}
}