【C#】 GridControl与GridView、容器和视图
GridControl与GridView
-
GridControl(容器)
- 放在窗体上的那个大控件,负责承载视图、绑定 DataSource、滚动、打印、主从关系等。
- 例如:
gridControlLogs.DataSource = _logs;
-
GridView(视图)
- 显示数据的表格视图(列、排序、过滤、行样式都是它管)。
- 放在
gridControlLogs.ViewCollection
里,其中一个被设为MainView
。 - 常用:
gridViewLogs.OptionsBehavior.Editable = false;
、gridViewLogs.RowStyle += ...
正确的命名与结构(应该有两个字段)
在 Form1.Designer.cs
里最好看到类似:
private DevExpress.XtraGrid.GridControl gridControlLogs;
private DevExpress.XtraGrid.Views.Grid.GridView gridViewLogs;...this.gridControlLogs.MainView = this.gridViewLogs;
this.gridControlLogs.ViewCollection.AddRange(new DevExpress.XtraGrid.Views.Base.BaseView[] {this.gridViewLogs});
如果没有,按下面修:
方式A(最简单)
- 直接删掉现在这个 GridControl,重新从工具箱拖一个 GridControl 到“日志”面板。
- 设计器会自动配一个 GridView(一般叫 gridView1)。
- 把它们重命名为:
gridControlLogs
和gridViewLogs
。
方式B(不删)
-
选中当前控件,把 (Name) 改成
gridControlLogs
。 -
打开 Smart Tag(控件右上角小箭头)→ Run Designer… → 左侧 Views
- 如果没有 GridView:点 Add 添加 GridView,把 Set as MainView 打上。
- 把该视图的 Name 改成
gridViewLogs
。
代码里怎么用(容器绑定、视图美化)
// 数据绑定 -> 绑在 GridControl 上
gridControlLogs.DataSource = _logs;// 视图设置 -> 操作 GridView
var gv = gridViewLogs;
gv.OptionsBehavior.Editable = false;
gv.OptionsView.ShowGroupPanel = false;
gv.OptionsView.ColumnAutoWidth = true;gv.Columns[nameof(LogItem.Time)].Caption = "时间";
gv.Columns[nameof(LogItem.Text)].Caption = "内容";
gv.Columns[nameof(LogItem.Time)].DisplayFormat.FormatType = DevExpress.Utils.FormatType.DateTime;
gv.Columns[nameof(LogItem.Time)].DisplayFormat.FormatString = "HH:mm:ss.fff";// 行着色(根据我们保存的 ARGB)
gv.RowStyle += (s, ev) =>
{var item = gv.GetRow(ev.RowHandle) as LogItem;if (item?.ColorArgb != null)ev.Appearance.ForeColor = Color.FromArgb(item.ColorArgb.Value);
};
小提示:若你不确定有没有视图,也可以在代码里兜底:
using DevExpress.XtraGrid.Views.Grid;
if (gridControlLogs.MainView == null)
{var view = new GridView(gridControlLogs);gridControlLogs.MainView = view;gridControlLogs.ViewCollection.Add(view);gridViewLogs = view;
}
总结:GridControl 绑定数据 & 承载视图,GridView 负责表格呈现。两者缺一不可,名字不要混。