我有一个dataGridView,它具有3列:使用数据库信息绑定(bind)的SystemId,FirstName,LastName。我想突出显示某行,可以使用:
dataGridView1.Rows[????].Selected = true;
但是我不知道该行的ID,并且绑定(bind)源不断变化,因此第10行在一个实例中可能是“John Smith”,而在另一个实例中甚至不存在(我有一个过滤器,它会根据用户输入的内容过滤出源,因此键入在“joh”中会产生名字/姓氏中都带有“joh”的所有行,因此单击一下,我的列表可以从50个名字变为3个)。
我想找到一种方法,可以根据SystemId和相应的数字选择行。我可以使用以下方法获取系统ID:
systemId = dataGridView1.Rows[dataGridView1.CurrentRow.Index].Cells["SystemId"].Value.ToString();
现在,我只需要将其应用于行选择器。诸如dataGridView1.Columns [“SystemId”]。IndexOf(systemId}之类的东西,但是不起作用(也不存在这种方法),我们将不胜感激。
最佳答案
这将为您提供该值的gridview行索引:
String searchValue = "somestring";
int rowIndex = -1;
foreach(DataGridViewRow row in DataGridView1.Rows)
{
if(row.Cells[1].Value.ToString().Equals(searchValue))
{
rowIndex = row.Index;
break;
}
}
或LINQ查询
int rowIndex = -1;
DataGridViewRow row = dgv.Rows
.Cast<DataGridViewRow>()
.Where(r => r.Cells["SystemId"].Value.ToString().Equals(searchValue))
.First();
rowIndex = row.Index;
那么您可以执行以下操作:
dataGridView1.Rows[rowIndex].Selected = true;
关于c# - 根据列和值在dataGridView中查找一行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10179223/