






















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)GridView gv
= sender as GridView; 
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));DXMenuItem loadItem
= new DXMenuItem("&Load Default Layout", new EventHandler(OnLoadDefaultLayoutMenuItemClicked));DXMenuItem exportToXlsItem
= new DXMenuItem("&Export To Xls", new EventHandler(OnExportToXlsMenuItemClicked));DXMenuItem exportToXlsxItem
= new DXMenuItem("E&xport To Xlsx", new EventHandler(OnExportToXlsxMenuItemClicked)); }
}
需要在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) }
}
这样做了还是会弹出Grid自带的确认框,如果不要弹出再添加以下事件
private void gridViewMain_InvalidRowException(object sender, DevExpress.XtraGrid.Views.Base.InvalidRowExceptionEventArgs e)
{try
{
e.ExceptionMode = DevExpress.XtraEditors.Controls.ExceptionMode.NoAction;
}
catch (Exception ex)}
}
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(); view.ExportToXls(filename,item);
}
}
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
}
}
}
}
}
}
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))}
catch (Exception ex) }
}
看灰机
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。