带区网格视图 和 高级带区网格视图 提供了带区元素,用于把列组织到逻辑组中。 本主题描述了基本的带区功能,并提供了关于带区内部结构和访问方法的信息。
基本的带区功能
在视觉上,带区由显示在列标题之上的带区标头呈现。 下面的插图展示了一个简单的示例。 有四个带区,每个带区中包含两个列。
带区不仅用于显示目的。 最终用户可以拖动带区来重新布置列。 如果需要快速重新布置列、而保留它们的逻辑组时,则这是非常有用的。 也可以把带区锚定到视图的左边缘或右边缘,因此带区的子列始终被显示,并且不能被水平滚动。 请参阅 固定带区 主题来获得关于这种功能的细节。
在默认情况下,列 (和带区) 只可以在父带区内移动。 这能阻止最终用户打破列的分组逻辑。 但是,也可能要允许列在带区之间移动,并且这可以通过启用视图的 BandedGridOptionsCustomization.AllowChangeColumnParent 选项来实现。
带区视图允许创建树状带区结构,并且位于上层行中的带区拥有位于下层行中的带区。 带区层级的数目不受限制。
下面的插图展示了一个示例分层带区结构。 Technical Info 带区拥有 Engine Info 和 Transmission Info 带区。 因此最终用户可以拖动 Technical Info 带区来移动属于 Engine Info 和 Transmission Info 带区的全部列。 当把带区锚定到视图的边缘时,带区的所有子带区列也被锚定。
在默认情况下,带区和列只允许在它们的父带区内移动。 此外,带区视图允许通过启用 BandedGridOptionsCustomization.AllowChangeBandParent 选项来改变这种行为。
请参阅 定制带区的布局 主题获得关于构建带区布局的详细信息。
如何在视图内组织带区
每个带区都通过 GridBand 对象表示。 此对象提供了带区标头的显示设置、控制带区大小的属性、子列集合、带区行为选项等。 因为带区可以被可视地组织为树,因此它们在对象层也构造树。 位于顶层级中的带区被存储在视图的 BandedGridView.Bands 集合中。 每个在该集合中的 GridBand 对象都可以有它自己的子带区集合。 此集合是通过带区的 GridBand.Children 属性公开的。 存储在该集合中的带区被显示在第二个层级。 它们也可以有自己的子带区,等等。 下面的插图举例说明了这一点。
访问带区
下列带区访问方法是可用的。
- 在代码中直接通过带区名称来访问。 这是可行的,因为 GridBand 对象是 Component 的子类。
- 通过向下扫描它们的层次结构来访问,使用 BandedGridView.Bands、GridBandCollection.Item 和 GridBand.Children 属性。
- 通过向上扫描它们的层次结构来访问,使用 GridBand.ParentBand 属性。
- 通过扫描其层次结构来访问可视带区,在遍历带区集合时使用 GridBandCollection.VisibleBandCount 和 GridBandCollection.GetVisibleBand 方法来代替 GridBandCollection.Item 属性。