我已用
string ClientName=this.dataSet2.Tables ["client"].Rows [this.dataGrid1.CurrentRowIndex ]["客户姓名"].ToString ();
来取ClientName的值,一切OK,没有任何问题,但当点击DataGrid的列头的时候,问题来了.
ClientName获取的是在排序之前的值,列排序之后相关的ClientName值是错误的.请问:
1.如何让DataGrid点击列无效.就是不让其排序.但必须显示列名(也就是抬头)
2.如果让其排序,如何让ClientName获取的值也是正确的.
3.DataGrid排序后内容发生变化的事件是哪个事件.

解决方案 »

  1.   

    第二个问题我已解决,方案如下.方法如下BindingManagerBase bm = dataGrid1 .BindingContext[dataGrid1.DataSource, dataGrid1.DataMember];
    if (bm.Count <= 0 || bm.Position == -1) return;
    DataRow dr = ((DataRowView)bm.Current).Row;
    ClientName=dr["客户姓名"].ToString ();
      

  2.   

    1.在datagrid上点右键选择property builder-->general-->allow sorting把勾去掉,不让排序就可以了。3.
    private void DataGrid1_SortCommand(object source, DataGridSortCommandEventArgs e)
    {
    }
      

  3.   

    晕哦,我说的不是webForm,而是winForm里面没有sortCommand事件.
      

  4.   

    Winform中的datagrid没有你要的事件,不过可以通过DataGrid.HitTestInfo来检测用户是否点击了列标头。
      

  5.   

    还有添加dataGrid.allowSort=false;好像没有任何用处,DataGrid还可以排序
      

  6.   

    3.个问题已解决!
    原来我设置了使用了表样式,TableStyles\AllowSorting设为False,一切OK,没有问题.