好象datagrid里有个什么sort属性,可以根据这个属性得到当肖排序状态,是什么我忘了,以前碰到过。
帮你UP一下。

解决方案 »

  1.   

    就是它所绑定到的当前 DataView 的Sort 属性
      

  2.   

    我想这个东西好象是很难找,但如果要知现在的排序状态还是有办法的,
    比较麻烦一点,你可以在datagrid_mouseDown事件中判断是哪一个columnhearder,因为第一次是空的,点一次,就变成升序,再点一次变成
    降序,然后就升序-》降序-》升序-》降序所以定义一个变量就知排序状态
      

  3.   

    如果你用dataview.sort属性如果没有用dataview则调用dataset.tablen[].defaultview.sort属性
      

  4.   

    我认为用dataset.tables[].defaultview.sort是不行的,
    如果你不设置sort属性,而只是单击datagrid的header,dataset.tables[0].defaultview.sort只会返回空
      

  5.   

    看一下利用datagrid里面某一个列的sort属性,是否可以得到。因为在设置的时候也是通过对某列设置sort属性得到的。我没有做过,只是猜测。
      

  6.   

    我也找了很久,没有什么解决方案,我写了下面的办法,感觉基本上没有什么问题。
    假设有DataGrid---dataGrid1
    private DataGrid dataGrid1;
    private DataSet ds;
    private ColumnIndex=-1;
    private ColumnIndex0=-1;
    思路是使用ColumnIndex来记录最后一个被点击的列头,然后通过该列的第一行和第二行比较(如果相同就与第三行比较)来确定升序或是降序。//记录鼠标按下时的Column
    private void dataGrid1_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
    {
    DataGrid.HitTestInfo hti=this.dataGrid1.HitTest(e.X,e.Y);
    if (hti.Type==DataGrid.HitTestType.ColumnHeader)
    ColumnIndex0=hti.Column;
    else
    ColumnIndex0=-1;
    }
    //记录鼠标抬下时的Column,并与按下时的比较
    private void dataGrid1_MouseUp(object sender, System.Windows.Forms.MouseEventArgs e)
    {
    if (ColumnIndex0!=-1)
    {
    DataGrid.HitTestInfo hti=this.dataGrid1.HitTest(e.X,e.Y);
    if (hti.Type==DataGrid.HitTestType.ColumnHeader)
    {
    if (ColumnIndex0==hti.Column)
    ColumnIndex=hti.Column;
    }
    }
    }
    //取得排序
    private void GetSort()
    {
    CurrencyManager cm=(CurrencyManager)this.dataGrid1.BindingContext[this.dataGrid1.DataSource,this.dataGrid1.DataMember];
    object o=((DataRowView)cm.List[0]).Row[ColumnIndex];
    for (int i=0;i<cm.Count;i++)
    {
    if (((DataRowView)cm.List[i]).Row[ColumnIndex]!=o)
    {
    if (((DataRowView)cm.List[i]).Row[ColumnIndex].ToString().CompareTo(o.ToString())>=0)
    MessageBox.Show("以"+ds.Tables[0].Columns[ColumnIndex].ColumnName+"升序排列");
    else
    MessageBox.Show("以"+ds.Tables[0].Columns[ColumnIndex].ColumnName+"降序排列");
    return;
    }
    }
    }