如何在DataGrid里面根据某个字段的值找到记录,然后把找到的那行记录设成当前行?

时间:2023-02-11 15:06:03
就是先根据我的检索条件,检索到对应的记录,然后把光标设在DataGrid中所找到的记录上面。

7 个解决方案

#1


你的检索条件是不是检索出来的纪录是唯一的,如果是,则可以定义table的主键,可以根据主键搜索值,然后在datagrid中设置CurrentIndex,既可以

#2


比如有个主键字段叫recid,你检索到满足条件的记录的recid以后,
。。。。。
private int GetPageIndexFromID(int nrecid)
{
         int nRetValue = -1;
for (int i=0; i<grid1.DataKeys.Count; i++)
if (nrecid == (int) grid1.DataKeys[i])
{
nRetValue = i;
break;
}

return nRetValue;
}
这样得到的就是该记录在DataGrid里的索引号,把它赋给grid1.SelectedIndex就可以了。

#3


上面的方法你要设置grid1.DataKeyField="recid"

#4


Mark

#5


1. 设置你的datagrid的datasource为dataview.
2. dataView.Sort = "Id"; // 你的字段
3. int index = dataView.Find( value );
   if( index > -1 )
       datagrid.CurrentRowIndex = index;

#6


To lsfyfan(Jackfan):
   采用你的方法,在没有插入新记录的时候是可以的,但是一旦增加了新的记录进去,那么Find()返回来就不是正确的Index了。比如说,新增了两条数据,它们的Id一个是-2,另外一个是-3,那用dataView.Find("-2")返回来的不是正确的Index。不知道为什么。

#7


或者你直接把检索到的记录的索引值(DataGrid中的索引值)赋给grid1.SelectedIndex就可以了

#1


你的检索条件是不是检索出来的纪录是唯一的,如果是,则可以定义table的主键,可以根据主键搜索值,然后在datagrid中设置CurrentIndex,既可以

#2


比如有个主键字段叫recid,你检索到满足条件的记录的recid以后,
。。。。。
private int GetPageIndexFromID(int nrecid)
{
         int nRetValue = -1;
for (int i=0; i<grid1.DataKeys.Count; i++)
if (nrecid == (int) grid1.DataKeys[i])
{
nRetValue = i;
break;
}

return nRetValue;
}
这样得到的就是该记录在DataGrid里的索引号,把它赋给grid1.SelectedIndex就可以了。

#3


上面的方法你要设置grid1.DataKeyField="recid"

#4


Mark

#5


1. 设置你的datagrid的datasource为dataview.
2. dataView.Sort = "Id"; // 你的字段
3. int index = dataView.Find( value );
   if( index > -1 )
       datagrid.CurrentRowIndex = index;

#6


To lsfyfan(Jackfan):
   采用你的方法,在没有插入新记录的时候是可以的,但是一旦增加了新的记录进去,那么Find()返回来就不是正确的Index了。比如说,新增了两条数据,它们的Id一个是-2,另外一个是-3,那用dataView.Find("-2")返回来的不是正确的Index。不知道为什么。

#7


或者你直接把检索到的记录的索引值(DataGrid中的索引值)赋给grid1.SelectedIndex就可以了