windows from下的DataGrid点击列标题排序后,使用
int i= this.dataGrid1.CurrentRowIndex ; 
MessageBox.Show(objTable.Rows[i]["id"].ToString());
取出的值不是数据集中当前选择的记录的而,而是没有点击列标题时,那个顺序下的值.
请问怎么解决这个问题呢?

解决方案 »

  1.   

    你别取dataGird下标,而是 在用户点击dataGrid的时候  直接把ID取出来就可以了
      

  2.   

    两种方法
    1在datagrid中加入主键列,可以不显示,通过主键来定位数据
    2使用datatable的defaultView而不是datatable对datagrid进行绑定个人倾向使用第一种方法
      

  3.   

    BindingManagerBase bm = this.dataGrid1.BindingContext[this.dataGrid1.DataSource,this.dataGrid1.DataMember];
    DataRow row = ((DataRowView)bm.Current).Row;
      

  4.   

    取出DataGrid当前行对应的DataTable的值。
    如果DataGrid绑定的是DataView,
    DataRowView drv = (DataRowView)this.BindingContext[this.ds,this.ds.Tables[0].TableName].Current;
    获取到drv就可以改数据,
    DataRow dw = drv.Row; // 得到DataRow,
    DataTable dt = dw.Table;//得到DataTable
    DataSet ds = dt.DataSet; http://www.syncfusion.com/FAQ/WinForms/FAQ_c44c.asp