如何删除具有循环文本框文本值的 datagridview 行?
how to remove a datagridview row that has your textbox text value with a loop?
所以我有这个 datagridview2,我用它来搜索。
当我搜索并找到我想要的行时,我单击该行,所有值都转到文本框,并且有一个按钮使用文本框 1 上的 id 删除单击时的记录,
在另一个 datagridview1 中,我有一种方法可以在我按 id 删除该项目时刷新整个 datagridview 记录。
所以回到 datagridview2,我想当我删除该行时,该行也从 datagridview 中删除,而不使用我创建的 refilldatagridview() 方法并刷新我的 datagridview,
当我使用 dataGridView2.Rows.Remove(row);
它没有循环工作,以及 removeAt 索引
问题出在循环中,它永远不会进入 if,我不知道为什么
foreach (DataGridViewRow row in dataGridView2.Rows)
{
if (row.Cells[0].Value.ToString().Equals(textBox1.Text))
{
MessageBox.Show("Match deleted");
dataGridView2.Rows.Remove(row);
}
}
不知道你说的是不是这个
使用 LINQ(尝试列名而不是列索引,如果我使用列索引会出错)
dataGridView1.Rows.RemoveAt(dataGridView1.Rows.Cast<DataGridViewRow>().Where(w => w.Cells["Value1"].Value.ToString() == textBox1.Text).Select(s => s.Index).FirstOrDefault());
dataGridView2.Rows.RemoveAt(dataGridView2.Rows.Cast<DataGridViewRow>().Where(w => w.Cells["Value1"].Value.ToString() == textBox1.Text).Select(s => s.Index).FirstOrDefault());
正在搜索:
正在删除:
只需将上面的第 2 行代码放在循环中即可。
希望对您有所帮助!
我认为有几种方法可以尝试
#1 次简单迭代
for (int i = 0; i < dataGridView2.Rows.Count; i++)
{
if (dataGridView2[i].Cells[0].Value.ToString().Equals(textBox1.Text))
dataGridView2.Rows.Remove(dataGridView2[i]);
}
#2 如果你想用dataTable来搜索
var query = dTable.AsEnumerable().Where(r => r.Field<string>(columnName) == textBox1.Text);
foreach(var row in query.ToList())
{
row.Delete();
}
所以我有这个 datagridview2,我用它来搜索。
当我搜索并找到我想要的行时,我单击该行,所有值都转到文本框,并且有一个按钮使用文本框 1 上的 id 删除单击时的记录,
在另一个 datagridview1 中,我有一种方法可以在我按 id 删除该项目时刷新整个 datagridview 记录。
所以回到 datagridview2,我想当我删除该行时,该行也从 datagridview 中删除,而不使用我创建的 refilldatagridview() 方法并刷新我的 datagridview,
当我使用 dataGridView2.Rows.Remove(row);
它没有循环工作,以及 removeAt 索引
问题出在循环中,它永远不会进入 if,我不知道为什么
foreach (DataGridViewRow row in dataGridView2.Rows)
{
if (row.Cells[0].Value.ToString().Equals(textBox1.Text))
{
MessageBox.Show("Match deleted");
dataGridView2.Rows.Remove(row);
}
}
不知道你说的是不是这个
使用 LINQ(尝试列名而不是列索引,如果我使用列索引会出错)
dataGridView1.Rows.RemoveAt(dataGridView1.Rows.Cast<DataGridViewRow>().Where(w => w.Cells["Value1"].Value.ToString() == textBox1.Text).Select(s => s.Index).FirstOrDefault());
dataGridView2.Rows.RemoveAt(dataGridView2.Rows.Cast<DataGridViewRow>().Where(w => w.Cells["Value1"].Value.ToString() == textBox1.Text).Select(s => s.Index).FirstOrDefault());
正在搜索:
正在删除:
只需将上面的第 2 行代码放在循环中即可。
希望对您有所帮助!
我认为有几种方法可以尝试
#1 次简单迭代
for (int i = 0; i < dataGridView2.Rows.Count; i++)
{
if (dataGridView2[i].Cells[0].Value.ToString().Equals(textBox1.Text))
dataGridView2.Rows.Remove(dataGridView2[i]);
}
#2 如果你想用dataTable来搜索
var query = dTable.AsEnumerable().Where(r => r.Field<string>(columnName) == textBox1.Text);
foreach(var row in query.ToList())
{
row.Delete();
}