高级带区网格视图 和 带区网格视图 使用 BandedGridColumn 对象来表示它们的列。 但是,带区网格视图没有全部使用由这些对象提供的所有设置,因为某些设置只是与高级带区网格视图所拥有的列相关。 本主题描述了这些设置,并提供了关于在高级带区网格视图内定制列的布局的信息。
带区列的布局
高级带区网格视图允许跨行布置列。 也可以垂直拉伸列标头,使得它们占用多行。 所创建的列标头布局控制了数据单元格的跨行布局,如下图所示。
列标头的位置是由 BandedGridColumn.ColIndex 和 BandedGridColumn.RowIndex 属性控制的。 注意,这些属性是只读的,因此不能用于定制布局。 要在运行时刻更改列标头的位置,则使用 AdvBandedGridView.SetColumnPosition 方法。 此方法接收该列、目标列和行索引作为参数。 要在带区之间移动列,则使用列的 BandedGridColumn.OwnerBand 属性。
在设计时刻,可以使用拖放操作来定制列标头的布局。 这可以直接在网格控件内或设计器的 Bands(带区) 页面内实现。 请参阅 定制带区的布局 主题获得关于使用该设计器页面的细节。
注意 |
---|
对于带区网格视图,仅当 BandedGridOptionsCustomization.AllowChangeColumnParent 选项被启用时,才可以在带区之间移动列。 否则,只能在父带区内移动列。 |
下面的插图举例说明了 BandedGridColumn.ColIndex 和 BandedGridColumn.RowIndex 属性。
在下列情况下,列标头占用几行:
- 使用 BandedGridColumn.RowCount 属性设置了占用的行数;
- 把 BandedGridColumn.AutoFillDown 列属性设置为 true。 在这种情况下,列标头将被自动拉伸,来占用它下面的任何空白间隔。
注意 |
---|
由视图的 GridView.ColumnPanelRowHeight 属性指定单个列标头行的高度。 |
下面的插图举例说明了在 BandedGridColumn.RowCount 和 BandedGridColumn.AutoFillDown 属性之间的关系。
通过代码定制带区列的布局
下面的代码创建了在上面插图中展示的布局。 首先,它使用 BandedGridColumn.OwnerBand 属性把列指派到适当的带区。 接下来,使用视图的 AdvBandedGridView.SetColumnPosition 方法,把列布置到带区内。
C# | 复制代码 |
---|---|
using DevExpress.XtraGrid.Views.BandedGrid; // assigning columns to bands colTrademark.OwnerBand = bandGeneral; colModel.OwnerBand = bandGeneral; colLiter.OwnerBand = bandTechnical; colCylinders.OwnerBand = bandTechnical; colSpeedCount.OwnerBand = bandTechnical; colTransmission.OwnerBand = bandTechnical; colPrice.OwnerBand = bandPrice; // changing the columns layout within bands AdvBandedGridView View = colTrademark.View as .AdvBandedGridView; view.SetColumnPosition(colTrademark, 0, 0); view.SetColumnPosition(colModel, 1, 0); view.SetColumnPosition(colLiter, 0, 0); view.SetColumnPosition(colCylinders, 0, 1); view.SetColumnPosition(colSpeedCount, 1, 0); view.SetColumnPosition(colTransmission, 1, 1); // forcing the Price column to stretch its header if needed colPrice.AutoFillDown = true; |
Visual Basic | 复制代码 |
---|---|
Imports DevExpress.XtraGrid.Views.BandedGrid ' assigning columns to bands colTrademark.OwnerBand = bandGeneral colModel.OwnerBand = bandGeneral colLiter.OwnerBand = bandTechnical colCylinders.OwnerBand = bandTechnical colSpeedCount.OwnerBand = bandTechnical colTransmission.OwnerBand = bandTechnical colPrice.OwnerBand = bandPrice ' changing the columns layout within bands AdvBandedGridView View = colTrademark.View View.SetColumnPosition(colTrademark, 0, 0) View.SetColumnPosition(colModel, 1, 0) View.SetColumnPosition(colLiter, 0, 0) View.SetColumnPosition(colCylinders, 0, 1) View.SetColumnPosition(colSpeedCount, 1, 0) View.SetColumnPosition(colTransmission, 1, 1) ' forcing the Price column to stretch its header if needed colPrice.AutoFillDown = True |