使用FlexGrid > 编辑 > 自动完成并映射列 |
自动完成和映射列由一个内置的叫做ColumnValueConverter的类实现。这个类涉及三种常见的绑定场景:
列只能取有限的特定值。例如,你有一个“Country”列,为字符串类型,同时具有一个国家名称的列表。用户应该从列表中选择一个国家,而不被允许输入的任何国家的名称不在此列表中。
您仅需两行代码即可处理这个场景:
C# |
拷贝代码
|
---|---|
var c = _flexEdit.Columns["Country"]; c.ValueConverter = new ColumnValueConverter(GetCountryNames(), true); |
ColumnValueConverter构造器的第一个参数提供了一个合法值的列表。第二个参数确定是否最终用户允许输入在此列表中不存在的值(在此示例中,用户不允许这么做)。
列具有一些共通的值选项,但是同样也可以接受其它值。例如,你有一个“Country”列,为字符串类型,并希望提供一个常见的国家名称列表供最终用户容易地进行选择。但在这种情况下,用户也应该允许键入在列表中不存在的值。
你仍然仅需要两行行代码即可处理这个场景:
C# |
拷贝代码
|
---|---|
var c = _flexEdit.Columns["Country"]; c.ValueConverter = new ColumnValueConverter(GetCountryNames(), false); |
和上一个示例一样,ColumnValueConverter构造器的第一个参数提供一组合法值的列表。在这个场景下,第二个参数决定了该列表是非排他性的,因此用户可以输入该列表中不存在的值。
列将包含键值而不是实际的值。例如,该列可能包含一个整数,表示一个国家标识,但用户应该看到并编辑相应的国家名称。下面的代码演示了如何处理这个场景:
C# |
拷贝代码
|
---|---|
// 建立键-值对应关系字典 var dct = new Dictionary<int, string>(); foreach (var country in GetCountryNames()) { dct[dct.Count] = country; } // 获取列 var c = _flexEdit.Columns["CountryID"]; // 创建并为值字典分配Converter c.ValueConverter = new ColumnValueConverter(dct); // 将列靠左对齐 c.HorizontalAlignment = HorizontalAlignment.Left; |