一个定时刷新的Datagrid中,如果用户正在浏览数据,可是一刷新,记录就跑到一条去了,如何才能保持datagrid停留在用户原来浏览的视图中呢?
望大侠们指点.
附: 我是通过DataTable.Clear(); dataAdapter.Fill(DataTable); 的方式进行刷新的,大家还有更好的方法吗?

解决方案 »

  1.   

    记住用户正在查看的记录。比如说正在看的订单号+订单Item.刷新后,根据订单号及Item查找,找到匹配的记录,定位为当前记录。
      

  2.   

    这个好比点击列头重新排序。
    //显示选中的多行,对DataGrid列进行排序后选择也适用
    private void btnShowSelectedRow_Click(object sender, System.EventArgs e)
    {
    CurrencyManager currencyManager = (CurrencyManager)this.BindingContext[this.dataGrid1.DataSource,this.dataGrid1.DataMember];
    StringBuilder sb = new StringBuilder();
    for(int i = 0;i < dataGrid1.VisibleRowCount;i++)
    {
    if(this.dataGrid1.IsSelected(i))
    {
    DataRowView drv = (DataRowView)currencyManager.List[i];
    DataRow dr = drv.Row;
    sb.AppendFormat("{0} {1} {2}\n",dr[0],dr[1],dr[2]);
    }
    }
    //打印选择数据
    MessageBox.Show(sb.ToString());
    }