本主题描述如何实现附条件的格式设置功能。 此功能根据视图的数据,专门为单元格或整个行指派外观。
附条件的格式设置的基础
视图的 BaseView.FormatConditions 属性允许实现附条件的单元格格式设置。 使用此功能,可以根据单元格的取值,为行或特定的列单元格设置样式。 附条件的格式设置技术只允许实现最简单的条件。 要提供更复杂的条件,则需要通过接管 GridView.RowStyle/GridView.RowCellStyle 事件,来人工改变个别行/单元格的外观。 请参阅 定制个别行与单元格的外观 文档获得更多信息。
样式条件指定了标准和外观设置 (StyleFormatConditionBase.Appearance)。 与标准相匹配的行或特定的列单元格,被根据指定的外观设置设置样式。
可以使用下列两种方法之一,为样式条件指定标准:
- 通过 StyleFormatConditionBase.Expression 属性以字符串指定标准。 此方法允许实现复合的标准。
把 StyleFormatConditionBase.Condition 属性设置为 FormatConditionEnum.Expression,并且通过 StyleFormatConditionBase.Expression 属性指定字符串表达式。 在指定表达式时,可以使用多种运算符和函数,引用其他字段的取值,等等。
要获得关于语法的信息,请参阅 表达式。
在默认情况下,当使用字符串表达式时,与表达式匹配的行整个被设置样式。 如果只需要为属于特定列的单元格设置样式,则设置 StyleFormatCondition.Column 属性。
- 通过设置样式条件的运算符、列和取值。 此方法允许实现简单的标准。
使用 StyleFormatConditionBase.Condition 属性来指定条件的运算符。 然后,指定列 (通过 StyleFormatCondition.Column 属性),该列的取值被用于与指定的运算符运行比较。 可以通过 StyleFormatConditionBase.Value1 和 StyleFormatConditionBase.Value2 属性指定运算符所需的取值。
在默认情况下,使用这种方法,只有属于 StyleFormatCondition.Column 的单元格被设置样式。 要设置整个行的样式,则启用 StyleFormatCondition.ApplyToRow 选项。
使用附条件的格式设置而提供的个别单元格的外观,会覆盖由视图和个别列提供的外观设置。 也要注意,也存在单元格满足多个样式条件的情况。 在这种情况下,使用由 BaseView.FormatConditions 集合中最后一个样式条件提供的外观设置来绘制它。
示例: 使用表达式
下面的示例展示了如何构建一个条件到样式网格行中,并使用一个字符串表达式作为该条件的标准。
此条件的标准通过 StyleFormatConditionBase.Expression 属性来指定。 这个表达式选中那些在 Region 字段中不包含 null 值的行。 匹配条件的这些行将以淡粉红色进行绘制:
下面的插图展示了此条件应用到 XtraGrid 控件中的效果:
C# | 复制代码 |
---|---|
using DevExpress.XtraGrid; StyleFormatCondition condition1 = new DevExpress.XtraGrid.StyleFormatCondition(); condition1.Appearance.BackColor = Color.SeaShell; condition1.Appearance.Options.UseBackColor = true; condition1.Condition = FormatConditionEnum.Expression; condition1.Expression = "[Region] != ?"; gridView1.FormatConditions.Add(condition1); |
Visual Basic | 复制代码 |
---|---|
Imports DevExpress.XtraGrid Dim condition1 As StyleFormatCondition = New DevExpress.XtraGrid.StyleFormatCondition() condition1.Appearance.BackColor = Color.SeaShell condition1.Appearance.Options.UseBackColor = True condition1.Condition = FormatConditionEnum.Expression condition1.Expression = "[Region] != ?" GridView1.FormatConditions.Add(condition1) |
示例: 包含特定取值的样式单元格
此示例展示了如何定制取值在 20 至 30 范围内的单元格的外观。 网格控件的初始外观在下图中显示。
按照下列步骤执行操作。
-
调用 XtraGrid 设计器,并切换到 “Format Conditions(格式条件)”页面。 使用 Add 按钮添加一个新样式条件。
-
使用属性网格来指定标准、以及用于绘制符合标准的单元格的外观设置。
-
运行此应用程序。 下面的插图展示了运行结果。 可以看到,在样式条件中指定的外观设置被用于绘制 Unit Price 列的取值介于 20 至 30 范围内的单元格。
所有上述任务也可以通过代码完成,如下面的示例代码所示:
C# | 复制代码 |
---|---|
using DevExpress.Utils; using DevExpress.XtraGrid; // ... StyleFormatCondition styleCondition = new StyleFormatCondition(); // Adds the style condition to the collection gridView1.FormatConditions.Add(styleCondition); styleCondition.Column = gridView1.Columns["UnitPrice"]; styleCondition.Condition = FormatConditionEnum.Between; styleCondition.Value1 = 20; styleCondition.Value2 = 30; // Modifying the appearance settings styleCondition.Appearance.BackColor = Color.FromArgb(128, 255, 128); styleCondition.Appearance.Font = new Font(gridView1.Appearance.Row.Font, FontStyle.Bold); styleCondition.Appearance.ForeColor = Color.FromArgb(64, 64, 64); |
Visual Basic | 复制代码 |
---|---|
Imports DevExpress.Utils Imports DevExpress.XtraGrid ' ... Dim styleCondition As StyleFormatCondition = New StyleFormatCondition() ' Adds the style condition to the collection GridView1.FormatConditions.Add(styleCondition) styleCondition.Column = GridView1.Columns("UnitPrice") styleCondition.Condition = FormatConditionEnum.Between styleCondition.Value1 = 10 styleCondition.Value2 = 20 ' Modifying the appearance settings styleCondition.Appearance.BackColor = Color.FromArgb(128, 255, 128) styleCondition.Appearance.Font = New Font(GridView1.Appearance.Row.Font, FontStyle.Bold) styleCondition.Appearance.ForeColor = Color.FromArgb(64, 64, 64) |