我用TableAdapter 对 DataTable 进行了 装载;
在IDE中使用数据源对一个DataGridView和一个Text进行了挂接,
当改变DataGridView中的聚焦记录时,Text也跟着变化。这当然是想要的。
但我没找到如何手动定位这条记录,以及找到相应的下一条记录,比如,我要添加一个“对比下一条”按钮在不影响当前记录的前提下,另读取下一条记录,怎么做?有人说DataSet.DataTable是没有类似游标的东西,对吗?不希望没做一次功能都用一个reader从头到尾的读,所以希望直接获取位置,并读取操作。

解决方案 »

  1.   

    先一次性读取 放入DataTable
    然后根据索引 下一条就
    dt(DataTable对象)rows[i+1]["colname"].ToString()
    然后索引临界处判断
      

  2.   

    用户在GridView里不会顺序点啊, 
      

  3.   

    你可以用dataGridView1_CellClick事件来处理你想要的 String Str1,Str2;
                DataGridViewCell c = dataGridView1.SelectedCells;
                //通过c.RowIndex去dt取值
                str1 =  dt(DataTable对象)rows[c.RowIndex]["colname"].ToString();
                //如果不是最后一条记录,则继续去下一条
                if (c.RowIndex != dataGridView1.Rows.Count-2)
                {
                  str2 =  dt(DataTable对象)rows[c.RowIndex+1]["colname"].ToString();  
                }else
                {
                    MessageBox.Show("已经是最后一条记录了");  
                }
      

  4.   


    写错了改为:
     if (c.RowIndex <= dataGridView1.Rows.Count-2)//临界值

      

  5.   

    楼上的这个办法足以处理使用DataGridView的情况, 但还是需要至少一个循环;如果界面上都是TextBox ,没有GridView之类的东西,我们怎么手动控制记录的变化呢?
    我半天也没找到DataSet.DataTable.Next之类的东西, 必须通过Reader的话, 又免不了不停的生成reader..如果实在不行,我就Reader,然后跳Index偏移量。 不知道效率怎么样。
      

  6.   

    用 curRow 记录当前行, 利用
    dataSet1.Users.FindByID()、
    curRow = (DataSet1.UsersRow)dataSet1.Users.Rows[dataSet1.Users.Rows.IndexOf(curRow) + 1];
    可以手动的控制记录,但却脱离了IDE设置的数据绑定....我觉得问题可以简化成:DataGridView是如何控制绑定的数据集中的数据记录的,组件1--表---组件2 间绑定机制由谁来负责?代码如何实现。
    因为没有找到MS 的 组件源码,所以也看不到是如何实现的.有哪位高人指点??
      

  7.   

    结果很简单, 使用 CurrencyManager类。