试过用DataTable.Select(), 但datagrid中显示的记录并不随着改变,我希望能达到如下命令的效果:
this.BindingContext[this.dataset1,"mtlist"].Position=i;

解决方案 »

  1.   

    不是很懂你的意思
     试试:   DataTable.DefaultView.RowFilter
      

  2.   

    System.Windows.Forms.BindingManagerBase mybind = this.BindingContext[dataGrid.DataSource];
    mybind.Position=i;
    加个事件:
    this.mybind.PositionChanged += new EventHandler(mybind_PositionChanged);
    应该没有问题了!
      

  3.   

    我再描述下我的问题:
       datagrid1.datasource=this.dataset1;
       datagrid1.datamember="mtlist";有一textbox,供用户输入想查找的内容,然后进行查找(field是已定的),如用户输入"grill",那么程序就在dataset1.table["mtlist"]中找出匹配的第一笔记录,同是datagrid中光标也定位到该记录处。说明一下:没有用dataview.usxue:我不知道如何将你说的应用在我的程序中。我现在是这样做的
    int rcds=this.dataset1.Tables["mtlist"].Rows.Count ;
    for (int i=0;i<rcds;i++)
    {
       if (this.dataset1.Tables["mtlist"].Rows[i][2].ToString()==mcode)
       { //mcode就是所要找的内容
           this.BindingContext[this.dataset1,"mtlist"].Position=i;
       }
    }
      

  4.   

    你用数据库连接的吗?
    如果是数据库的话那就好办多了:
    在选择的字段中选择语句加就可以了,如:
    this.sqlSelectcmd.CommandText = "select * from authors where name='"+this.textbox.Text+"'";
    然后进行查找就能找到了。你上面所用的方法,找到的应该是最后一条匹配的数据吧。:)还有一种方法就是你的数据中,进行排序一下再查找可能会好点吧,:)
      

  5.   

    对,忘了加退出了,应该找第一笔记录的.谢谢.是一个winform application来的。
    不是每次执行查询都重新由数据库取数据,在formload时已将所有记录读出。
      

  6.   

    我还是希望能直接定位到所找记录在dataset1.table["mtlist"]的位置上.