网格视图使用行和列来呈现数据。 本主题讨论如何在视图内排列行,以及如何定制行的布局。 要获得关于列的布局的信息,请参阅 列的布局与自动宽度 主题。
行的布局基础
在默认情况下,行被接连显示。 所有行都有相同的高度,行高是由行的字体设置确定的。 行高由文本高度最大的行确定。 请参阅 外观概述 主题获得关于修改行的外观设置的细节。
下面的插图展示了默认的行布局 (所有行都使用相同的字体设置),以及在修改分组行的字体设置之后的布局。 注意数据行的行高已经被改变,即使它们的字体设置没有被改变。
可以使用许多属性来改变上面所描述的默认行为。 首先,可以使用视图的 GridView.RowHeight 属性来人工改变数据行高度。 接下来是分组行的高度,通过 GridView.GroupRowHeight 属性指定。 最后,可以使用数据行之间的间距。 使用 GridView.RowSeparatorHeight 属性来实现此目的。 注意,GridView.RowHeight 和 GridView.GroupRowHeight 属性只能用于增加行高。 行高不能被设置为小于其文本所需的高度。
下面的插图举例说明了 GridView.RowHeight、GridView.GroupRowHeight 和 GridView.RowSeparatorHeight 属性。
可变的数据行高度
网格视图允许使用可变的高度来显示数据行。 在两种情况下可以使用可变的行高。 第一种情况是在数据行高度取决于行的内容时。 要启用此功能,需要把 GridOptionsView.RowAutoHeight 选项设置为 true。 注意,行高仅取决于使用 MemoEdit 或 PictureEdit 来显示、编辑其取值的单元格的内容。 请参阅 内置编辑器概述 主题来获得关于为单元格指派编辑器的细节。
注意,当使用 MemoEdit 和可变行高时,请确保单元格的外观对象的 TextOptions.WordWrap 选项没有被设置为 WordWrap.NoWrap。 请参阅 外观概述 主题来获得更多关于外观的信息。
也可以人工指定不同的行高。 接管 GridView.CalcRowHeight 事件来实现此目的。 当视图或行失效时,此事件为每个数据行发生。 它允许指定对行高的处理。 下面的代码展示了一个事件处理程序示例。
C# | 复制代码 |
---|---|
using DevExpress.XtraGrid.Views.Grid; private void gridView1_CalcRowHeight(object sender, RowHeightEventArgs e) { GridView View = sender as GridView; if (!view.IsGroupRow(e.RowHandle)) if (view.GetVisibleIndex(e.RowHandle) % 2 == 0) e.RowHeight = 32; } |
Visual Basic | 复制代码 |
---|---|
Imports DevExpress.XtraGrid.Views.Grid Private Sub GridView1_CalcRowHeight(ByVal sender As Object, ByVal e As RowHeightEventArgs) _ Handles GridView2.CalcRowHeight Dim View As GridView = sender If Not View.IsGroupRow(e.RowHandle) Then If View.GetVisibleIndex(e.RowHandle) Mod 2 = 0 Then e.RowHeight = 32 End If End If End Sub |
下面的插图显示了代码运行结果。