下面的示例演示了如何使用自定义格式提供程序,把 XtraGrid 列中的 Boolean 值替换为特定的字符串。 请参阅 自定义格式设置 主题获得关于创建自定义格式提供程序的总说明。 注意,也可以通过网格的事件 (ColumnView.CustomColumnDisplayText) 为 Boolean 值设置自定义格式。
在本例中创建了一个自定义格式提供程序类。 它包含两个内部字段,用于指定与 true 和 false 取值对应的字符串。 在自定义格式提供程序的构造函数中初始化这两个字段。 此类的 Format 方法检查当前待设置格式的取值,并返回一个适当的字符串。 请参阅下面的代码。
C# | 复制代码 |
---|---|
class BooleanFormatter : IFormatProvider, ICustomFormatter { string trueString, falseString; public BooleanFormatter(string trueString, string falseString) { this.trueString = trueString; this.falseString = falseString; } public object GetFormat(System.Type type) { return this; } public string Format(string formatString, object arg, IFormatProvider formatProvider) { bool formatValue = Convert.ToBoolean(arg); if (formatValue) return trueString; else return falseString; } } |
Visual Basic | 复制代码 |
---|---|
Class BooleanFormatter Implements IFormatProvider, ICustomFormatter Dim trueString, falseString As String Public Sub New(ByVal trueString As String, ByVal falseString As String) Me.trueString = trueString Me.falseString = falseString End Sub Public Function GetFormat(ByVal type As System.Type) As Object _ Implements IFormatProvider.GetFormat Return Me End Function Public Function Format(ByVal formatString As String, ByVal arg As Object, _ ByVal formatProvider As IFormatProvider) As String Implements ICustomFormatter.Format Dim formatValue As Boolean = Convert.ToBoolean(arg) If (formatValue) Then Return trueString Else Return falseString End If End Function End Class |
考虑在下面插图中显示的列。 它被绑定到一个 Boolean 字段,此字段的取值指定汽车是否有自动驾驶功能。
通过把 true 和 false 值分别替换为“Automatic” 和 “Manual”字符串,该列就可以提供更明确的信息。 下面的代码展示了如何把 BooleanFormatter 指派到该列。
该列的内置编辑器必须是文本编辑器,否则不能为取值设置格式。 要把文本编辑器用作内置编辑,则把一个 RepositoryItemTextEdit 对象指派到该列的 GridColumn.ColumnEdit 属性。
C# | 复制代码 |
---|---|
using DevExpress.Utils; // ... colTransmission.ColumnEdit = colTransmission.View.GridControl.RepositoryItems.Add("TextEdit"); colTransmission.Caption = "Transmission Kind"; colTransmission.DisplayFormat.FormatType = FormatType.Custom; colTransmission.DisplayFormat.Format = new BooleanFormatter("Automatic", "Manual"); |
Visual Basic | 复制代码 |
---|---|
Imports DevExpress.Utils ' ... colTransmission.ColumnEdit = colTransmission.View.GridControl.RepositoryItems.Add("TextEdit") colTransmission.Caption = "Transmission Kind" colTransmission.DisplayFormat.FormatType = FormatType.Custom colTransmission.DisplayFormat.Format = new BooleanFormatter("Automatic", "Manual") |
下面的插图显示了运行结果。