从 DataGridView C# 中删除具有特定值的行

问题描述 投票:0回答:3

我有一个 WinForm DataGridView 如下,我需要删除列中具有特定值的行

enter image description here

在本例中,我使用文本字段输入代码,然后单击“删除”列值下具有 ITM-000001 的所有行。我不知道从哪里开始。

private void deleteClick(object sender, EventArgs e)
{      
    String code = txtCode.Text;
    // CODE HERE       
}
c# winforms datagridview
3个回答
3
投票

我已经很长一段时间没有使用 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.
    }
}

3
投票

不一定比马修的解决方案更好甚至更简单;只是我有时发现有用的不同方法:

    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
的使用,并且在这里以不同的方式做只是为了好玩..


0
投票

在按钮或其他事件中您可以输入:

foreach (DataGridViewRow row in dataGridView1.Rows)
if (convert.toString(row.Cells[0].Value) == "ITM-000001")
    dataGridView1.Rows.RemoveAt(row.Index);
© www.soinside.com 2019 - 2024. All rights reserved.