我有一个dataGridView,它有3列:SystemId、FirstName、LastName,它们是使用数据库信息绑定的。我想突出显示某个行,我将使用以下命令执行此操作:
dataGridView1.Rows[????].Selected = true;
然而,我不知道行ID,并且bindingsource在不断变化,因此第10行在一个示例中可能是“John Smith”,但在另一个示例中甚至不存在(我有一个过滤器,它根据用户输入的内容过滤掉源代码,因此键入“joh”将生成名/姓中包含“joh”的所有行,因此我的列表可以在一次单击中从50个名称变为3个)。
我想找到一种方法,根据SystemId和相应的编号选择行。我可以使用以下方法获取系统ID:
systemId = dataGridView1.Rows[dataGridView1.CurrentRow.Index].Cells["SystemId"].Value.ToString();
现在我只需要将它应用到行选择器中。类似于dataGridView1.Columns[“SystemId”].IndexOf(systemId},但这不起作用(也不存在这样的方法)。任何帮助都非常感谢。
9条答案
按热度按时间qgzx9mmu1#
这将为您提供值的gridview行索引:
或LINQ查询
那么你可以:
vecaoik12#
上面的答案只在
AllowUserToAddRows
被设置为false
时有效。如果该属性被设置为true
,那么当循环或Linq查询试图协商新行时,您将得到NullReferenceException
。我修改了上面两个可接受的答案来处理AllowUserToAddRows = true
。循环回答:
LINQ回答:
zfycwa2u3#
或者你可以这样用。这样可能更快。
7uhlpewt4#
试试这个:
brccelvz5#
如果您只想检查该项目是否存在:
t8e9dugd6#
这是基于Gordon的上述回答--并不是所有的都是我的原创作品,我所做的是在我的静态实用程序类中添加一个更通用的方法。
然后以我想使用的任何形式调用该方法,传递DataGridView、列名和搜索值。为了简单起见,我将所有内容转换为字符串进行搜索,尽管添加重载来指定数据类型很容易。
mrzz3bfm7#
使用WPF的用户
如果您希望在此之后获取选定的行项目,则以下代码片段很有用
tvokkenx8#
oxcyiej79#
您可以尝试: