Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/301.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何基于textbox中的值聚焦datagridview中的特定行?_C#_.net_Winforms_Datagridview - Fatal编程技术网

C# 如何基于textbox中的值聚焦datagridview中的特定行?

C# 如何基于textbox中的值聚焦datagridview中的特定行?,c#,.net,winforms,datagridview,C#,.net,Winforms,Datagridview,我有一个datagridviewdPersons,内容从数据库绑定(列:idPerson,personName)。。在相同的形式中,我有文本框txtCodePerson,txtPersonName 我通过填充文本框并单击btnSave向数据库添加数据。。然后重新pind数据,使新行在datagridview上可见 现在。。我想通过从txtCodePerson获取值来关注最近添加的行,并在idPerson列中设置与该值相等的选定行 代码: String searchValue = txtCodeP

我有一个datagridview
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];

对不起。。它不起作用。。。绑定数据后,焦点仍然转到第一行,代码经过测试并正常工作。尝试将其放入正确的事件处理程序中,并使用断点查找问题。当有人为你发布答案时,你需要在干净的环境中测试答案。