我有一个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/

10-10 16:09