<<XtraGrid Use Tips>> (2)

8. 在最左侧显示行号

 view.CustomDrawRowIndicator += this.GridView_CustomDrawRowIndicator;

view.RowCountChanged  +=   this .GridView_RowCountChanged;

protected   void  GridView_CustomDrawRowIndicator( object  sender, RowIndicatorCustomDrawEventArgs e)
        {

            e.Appearance.TextOptions.HAlignment 
=  DevExpress.Utils.HorzAlignment.Far;

            
if  (e.Info.IsRowIndicator)
            {
                
if  (e.RowHandle  >=   0 )
                {
                    e.Info.DisplayText 
=  (e.RowHandle  +   1 ).ToString();
                }
            }
        }

protected   void  GridView_RowCountChanged( object  sender, EventArgs e)
        {

        
            GridView gv 
=  sender  as  GridView;
            
if  (gv  ==   null )
                
return ;
            
if  (gv.RowCount  <=   0 )
            {
                gv.IndicatorWidth 
=   - 1 ;
            }
            
else
            {
                gv.IndicatorWidth 
=   25   +  Convert.ToInt32(Math.Floor(Math.Log(gv.RowCount,  10 ))  +   1 *   5 ;
            }
        }

 

 

 


9. 添加右键菜单

view.ShowGridMenu  +=   this .GridView_ShowGridMenu;


protected   void  GridView_ShowGridMenu( object  sender, GridMenuEventArgs e)
        {

            
if  (e.MenuType  ==  DevExpress.XtraGrid.Views.Grid.GridMenuType.Column)
            {
                DevExpress.XtraGrid.Menu.GridViewColumnMenu menu 
=  e.Menu  as  GridViewColumnMenu;

                DXMenuItem saveItem 
=   new  DXMenuItem( " &Save Layout " new  EventHandler(OnSaveLayoutMenuItemClicked));
                saveItem.BeginGroup 
=   true ;
                saveItem.Tag 
=  sender;
                menu.Items.Add(saveItem);

                DXMenuItem loadItem 
=   new  DXMenuItem( " &Load Default Layout " new  EventHandler(OnLoadDefaultLayoutMenuItemClicked));
                loadItem.Tag 
=  sender;
                menu.Items.Add(loadItem);

                DXMenuItem exportToXlsItem 
=   new  DXMenuItem( " &Export To Xls " new  EventHandler(OnExportToXlsMenuItemClicked));
                exportToXlsItem.Tag 
=  sender;
                menu.Items.Add(exportToXlsItem);

                DXMenuItem exportToXlsxItem 
=   new  DXMenuItem( " E&xport To Xlsx " new  EventHandler(OnExportToXlsxMenuItemClicked));
                exportToXlsxItem.Tag 
=  sender;
                menu.Items.Add(exportToXlsxItem);

            }
        }

 

 

需要在ValidateRow事件中进行验证,效果(当右键点击column的时候,添加4个MenuItem)


 

10. 验证某行的输入值

需要在ValidateRow事件中进行验证

private   void  gridViewMain_ValidateRow( object  sender, DevExpress.XtraGrid.Views.Base.ValidateRowEventArgs e)
        {
            
try
            {


                
if  ( string .IsNullOrEmpty(  this .gridViewMain.GetRowCellDisplayText(e.RowHandle , this .gridColumn1)))
                {
                    
this .ShowExclamationMessage( " Must input gridColumn1. " );

                    
this .gridViewMain.FocusedColumn  =   this .gridColumn1;

                    e.Valid 
=   false ;

                    
return ;

                }

             
            }
            
catch  (Exception ex)
            {

                
this .ProcessException(ex);
            }
            
finally
            {

            }
        }

 

 这样做了还是会弹出Grid自带的确认框,如果不要弹出再添加以下事件

         private   void  gridViewMain_InvalidRowException( object  sender, DevExpress.XtraGrid.Views.Base.InvalidRowExceptionEventArgs e)
        {

            
try
            {
                e.ExceptionMode 
=  DevExpress.XtraEditors.Controls.ExceptionMode.NoAction;

            }
            
catch  (Exception ex)
            {

                
this .ProcessException(ex);
            }
            
finally
            {
                
            }

        }

 

 

11. Binding的值可以是属性的属性(对泛型支持不好)

this.gridColumn4.FieldName = "Function.FunctionCode";

12. 导出到Excel完整代码(优化了速度)

private   static   void  ExportToEx(String filename,  string  ext, BaseView view)
        {
            Cursor currentCursor 
=  Cursor.Current;

            
try
            {
                Cursor.Current 
=  Cursors.WaitCursor;
                
if  (ext  ==   " rtf " )
                {
                    view.ExportToRtf(filename);
                }
                
if  (ext  ==   " pdf " )
                {
                    view.ExportToPdf(filename);
                }
                
if  (ext  ==   " mht " )
                {
                    view.ExportToMht(filename);
                }
                
if  (ext  ==   " htm " )
                {
                    view.ExportToHtml(filename);
                }
                
if  (ext  ==   " txt " )
                {
                    view.ExportToText(filename);
                }
                
if  (ext  ==   " xls " )
                {

                    XlsExportOptions item 
=   new  DevExpress.XtraPrinting.XlsExportOptions();
                    item.ShowGridLines 
=   false ;
                    item.Suppress256ColumnsWarning 
=   true ;
                    item.Suppress65536RowsWarning 
=   true ;
                    item.ExportHyperlinks 
=   false ;
                    item.TextExportMode 
=  TextExportMode.Text;

                    view.ExportToXls(filename,item);
                }
                
if  (ext  ==   " xlsx " )
                {
                    XlsxExportOptions item
= new  XlsxExportOptions(TextExportMode.Text , false  , false );
                    view.ExportToXlsx(filename, item);
                }
            }
            
finally
            {
                Cursor.Current 
=  currentCursor;
            }


        }

 

 

13. 删除一行记录

比如选中某一行的时候,你按CTRL+Del删除,需要在ProcessGridKey中处理

private   void  gridMain_ProcessGridKey( object  sender, KeyEventArgs e)
        {
            
try
            {
                
if  (e.KeyCode  ==  Keys.Delete  &&  e.Control  &&   this .gridViewMain.FocusedRowHandle  >=   0 )
                {
                    
object  item  =   this .gridViewMain.GetRow( this .gridViewMain.FocusedRowHandle) ;

                    
if  (item  ==   null )
                    {
                        
return ;
                    }
                    
else
                    {
                        
if  ( this .ShowYesNoQuestionMessage( string .Format( " Are you sure to delete the row? " ))  ==  DialogResult.Yes)
                        {

                            
// do delete

                        }
                    }


                }
            }
            
catch  (Exception ex)
            {

                
this .ProcessException(ex);
            }
            
finally
            {

            }
        }

 

 

14. 设置某个单元格是否可编辑

光设置属性不可以的,只能设置整个GridView或某一列是否可编辑(Editable).在ShowingEditor事件中处理

private   void  gridViewMain_ShowingEditor( object  sender, CancelEventArgs e)
        {
            
try
            {


                
if  ( this .gridViewMain.FocusedRowHandle  <   0  )
                {
                    
return ;
                }

                Object item 
=   this .gridViewMain.GetRow( this .gridViewMain.FocusedRowHandle);

                
if  ( this .gridViewMain.FocusedColumn.Equals ( this .gridColumn1)  &&  Condition(item))
                {
                    
// Item满足一定的条件,不允许编辑
                    e.Cancel  =   true ;
                    
return ;
                }

                

            }
            
catch  (Exception ex)
            {

                
this .ProcessException(ex);
            }
            
finally
            {
                
            }
        }

 

 看灰机

转载于:https://www.cnblogs.com/MasterCai/archive/2010/08/05/1793340.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值