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 ;
}
}
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);
}
}
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
{
}
}
{
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
{
}
}
{
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;
}
}
{
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
{
}
}
{
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
{
}
}
{
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
{
}
}
看灰机