DevExpress.XtraGrid中关于排序的一点经验总结

1、指定给一列进行排序

dgvContent.Columns[ " SomeFieldName " ].SortOrder  =  DevExpress.Data.ColumnSortOrder.Ascending;


 2、对于已经排好序的数据,想不让它进行排序或者另外指定排序

dgvContent.ClearSorting();

3、指定表格只按特殊列进行排序

DevExpress.XtraGrid中关于排序的一点经验总结 代码
private   void  dgvContent_EndSorting( object  sender, System.EventArgs e) {
   GridView view 
=  sender 
as  GridView;
   
string  sort  =  (view.DataSource  as  DataView).Sort;
   
if  (sort  !=   string .Empty)
      (view.DataSource 
as  DataView).Sort  =   " [Col1], "   +  sort;

4、在点击表头进行排序时弹出对话框,让用户确认是否排序

 

DevExpress.XtraGrid中关于排序的一点经验总结 代码
private   void  dgvContent_MouseUp( object  sender, MouseEventArgs e) 
{
           
if (e.Button  !=  MouseButtons.Left  ||  e.Clicks  >   1
                  
return ;

         GridView view 
=  sender  as  GridView;
         
if (view.State  !=  GridState.ColumnDown) 
              
return ;

            
         Point p 
=  view.GridControl.PointToClient(MousePosition);

         GridHitInfo info 
=  view.CalcHitInfo(p);
         
if (info.HitTest  ==  GridHitTest.Column) 
       { 
                
               
if (MessageBox.Show( string .Format( " Sort by {0} column? " , info.Column.Caption), 
                    
" Confirmation " , MessageBoxButtons.YesNo)  !=  DialogResult.Yes) 
              {
                        ((DevExpress.Utils.DXMouseEventArgs)e).Handled 
=   true ;
                    
this .BeginInvoke( new  MethodInvoker(view.LayoutChanged));
                
             }

        }

   }

5、将排序的信息显示在分组表头

 

DevExpress.XtraGrid中关于排序的一点经验总结 代码
private   void  dgvContent_MouseUp( object  sender, MouseEventArgs e)
        {
            
if  (e.Button  !=  MouseButtons.Left  ||  e.Clicks  >   1 return ;
            GridView view 
=  sender  as  GridView;
            
if  (view.State  !=  GridState.ColumnDown)  return ;
            Point p 
=  view.GridControl.PointToClient(MousePosition);
            GridHitInfo info 
=  view.CalcHitInfo(p);
            
if  (info.HitTest  ==  GridHitTest.Column)
            {                
                
if  (info.Column.SortOrder  !=  DevExpress.Data.ColumnSortOrder.Ascending  ||  info.Column.SortIndex  !=  view.SortInfo.Count  -   1 )
                {
                    info.Column.SortIndex 
=  view.SortInfo.Count;
                    info.Column.SortOrder 
=  DevExpress.Data.ColumnSortOrder.Ascending;
                }
                
else   if  (info.Column.SortOrder  ==  DevExpress.Data.ColumnSortOrder.Ascending)
                {
                    info.Column.SortOrder 
=  DevExpress.Data.ColumnSortOrder.Descending;
                }
                
if (info.Column.SortOrder == DevExpress.Data.ColumnSortOrder.Ascending)
                    dgvContent.GroupPanelText 
=   " 拖拉一列 按 "   +  info.Column.Caption + " 升序 " ;
                
if  (info.Column.SortOrder  ==  DevExpress.Data.ColumnSortOrder.Descending)
                    dgvContent.GroupPanelText 
=   " 拖拉一列 按 "   +  info.Column.Caption  +   " 降序 " ;
                ((DevExpress.Utils.DXMouseEventArgs)e).Handled 
=   true ;
                
this .BeginInvoke( new  MethodInvoker(view.LayoutChanged));

            }

6、清除其他列的排序

 

DevExpress.XtraGrid中关于排序的一点经验总结 代码
                 for  ( int  i  =   0 ; i  <  view.Columns.Count; i ++ )
                {
                    
if  ( ! view.Columns[i].Equals(info.Column))
                    {
                        view.Columns[i].SortOrder 
=  DevExpress.Data.ColumnSortOrder.None;
                    }
                }


你可能感兴趣的:(DevExpress)