C# 如何基于textbox中的值聚焦datagridview中的特定行?
我有一个datagridviewC# 如何基于textbox中的值聚焦datagridview中的特定行?,c#,.net,winforms,datagridview,C#,.net,Winforms,Datagridview,我有一个datagridviewdPersons,内容从数据库绑定(列:idPerson,personName)。。在相同的形式中,我有文本框txtCodePerson,txtPersonName 我通过填充文本框并单击btnSave向数据库添加数据。。然后重新pind数据,使新行在datagridview上可见 现在。。我想通过从txtCodePerson获取值来关注最近添加的行,并在idPerson列中设置与该值相等的选定行 代码: String searchValue = txtCodeP
dPersons
,内容从数据库绑定(列:idPerson
,personName
)。。在相同的形式中,我有文本框txtCodePerson
,txtPersonName
我通过填充文本框并单击btnSave
向数据库添加数据。。然后重新pind数据,使新行在datagridview上可见
现在。。我想通过从txtCodePerson
获取值来关注最近添加的行,并在idPerson
列中设置与该值相等的选定行
代码:
String searchValue = txtCodePerson.Text;
dgPersons.ClearSelection();
int rowIndex = -1;
foreach (DataGridViewRow row in dgPersons.Rows)
{
if (row.Cells[0].Value.ToString().Equals(searchValue))
{
rowIndex = row.Index;
break;
}
}
但是它不起作用。。添加行后,所选行将自动转到第一行
注意:选择最后一行并不能满足我的要求,因为在绑定数据后,datagridview数据按字母顺序重新引用到
personName
列上,您可以找到对应列值等于指定文本的行。然后将其设置为当前行
例如,如果要查找其idPerson
列等于txtCodePerson
文本的行,则可以使用以下代码:
var searchValue = txtCodePerson.Text;
var row = dataGridView1.Rows.Cast<DataGridViewRow>()
.Where(x => !x.IsNewRow)
.Where(x => ((DataRowView)x.DataBoundItem)["idPerson"].ToString().Equals(searchValue))
.FirstOrDefault();
this.dataGridView1.CurrentCell = row.Cells[0];
var searchValue=txtCodePerson.Text;
var row=dataGridView1.Rows.Cast()
.其中(x=>!x.IsNewRow)
.Where(x=>((DataRowView)x.DataBoundItem)[“idPerson”].ToString().Equals(searchValue))
.FirstOrDefault();
this.dataGridView1.CurrentCell=row.Cells[0];
对不起。。它不起作用。。。绑定数据后,焦点仍然转到第一行,代码经过测试并正常工作。尝试将其放入正确的事件处理程序中,并使用断点查找问题。当有人为你发布答案时,你需要在干净的环境中测试答案。