用DataView的Find就会找到所在的行,然后让DataGrid去select就可以。 DataTable  dt = (DataTable)(this.dataGrid1.DataSource); DataView dv = dt.DefaultView;
dv.Sort = "CustomerID"; int i = dv.Find(this.textBox1.Text); if (i > dv.Count || i < 0)
{
MessageBox.Show("找不到");
}
else
{
this.dataGrid1.Select(i);
}

解决方案 »

  1.   

    DataRow myrows=ds.Tables["titles"].Rows.Find("TC7777"); 
    dv.Find(this.textBox1.Text);楼上的上面两个语句有什么不同,两个Find()的()内的表达式一样吗?
    前面一个返回是一行后面一个返回的是行号对吗?
    可是前一个编译能通过,可是运行就说,没有主键?
      

  2.   

    呵呵,不会吧,没有主键那是你的表的问题了,怎么怪程序呢?不过,我觉得你完全可以直接用DataView,具体设置如下:
    this.DataView1.Table=ds;
    this.DataGrid.DataSource=this.DataView1;
      

  3.   

    DataRow myrows=ds.Tables["titles"].Rows.Find("TC7777");
    上句中 Find()的()内的表达式对吗?是直接给要找的值吗?(要找的行的某列的值)
      

  4.   

    titles是SQLSERVER2K的PUBS数据库的表,肯定是有主键的,用sqlDataAdapter1把它加到数据集中怎么就会没有主键了,不可能吧!
      

  5.   

    用DataView的Find就会找到所在的行