使用FlexGrid > 编辑 > 数据映射列 |
数据映射列包含键而不是实际值。例如,该列可能包含一个整数,表示一个国家标识,但用户应该看到并编辑相应的国家名称。
这种情况需要一点点的代码行:
C# |
拷贝代码
|
---|---|
// 建立键-值字典 var dct = new Dictionary<int, string>(); foreach (var country in GetCountryNames()) { dct[dct.Count] = country; } // 指定字典至列 var c = _flexEdit.Columns["CountryID"]; c.ValueConverter = new ColumnValueConverter(dct); c.HorizontalAlignment = HorizontalAlignment.Left; |
代码首先是构建一个映射国家标识值(整数)到国家名称(字符串)的字典。
然后使用词典构建ColumnValueConverter 并指定转换器至列的ValueConverter属性,就像之前的示例那样。
用户可以选择在字典里现有的国家,且不允许输入任何未经映射的值。
最后,该代码将该列的对齐方式设置为左对齐。由于该列实际上包含整数值,它将默认为右对齐。但是,因为我们现在需要显示国家的名字,在这里左对齐是一个更好的选择。
下图显示编辑器的外观,同时从列表中选择一个值。注意这里编辑器是如何支持自动完成的,当用户键入“Ger”下拉框将自动选择有效的选项“Germany”(而不是“Guatemala”,或者“Eritrea”,再或者“Romania”)。