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

1、指定给一列进行排序

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


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

dgvContent.ClearSorting();

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

ExpandedBlockStart.gif 代码
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、在点击表头进行排序时弹出对话框,让用户确认是否排序

 

ExpandedBlockStart.gif 代码
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、将排序的信息显示在分组表头

 

ExpandedBlockStart.gif 代码
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、清除其他列的排序

 

ExpandedBlockStart.gif 代码
                 for  ( int  i  =   0 ; i  <  view.Columns.Count; i ++ )
                {
                    
if  ( ! view.Columns[i].Equals(info.Column))
                    {
                        view.Columns[i].SortOrder 
=  DevExpress.Data.ColumnSortOrder.None;
                    }
                }


转载于:https://www.cnblogs.com/libichong/archive/2010/06/16/1758910.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值