我有一个 WinForm DataGridView 如下,我需要删除列中具有特定值的行
在本例中,我使用文本字段输入代码,然后单击“删除”列值下具有 ITM-000001 的所有行。我不知道从哪里开始。
private void deleteClick(object sender, EventArgs e)
{
String code = txtCode.Text;
// CODE HERE
}
我已经很长一段时间没有使用 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.
}
}
不一定比马修的解决方案更好甚至更简单;只是我有时发现有用的不同方法:
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
的使用,并且在这里以不同的方式做只是为了好玩..
在按钮或其他事件中您可以输入:
foreach (DataGridViewRow row in dataGridView1.Rows)
if (convert.toString(row.Cells[0].Value) == "ITM-000001")
dataGridView1.Rows.RemoveAt(row.Index);