<s:GridColumn>
tag inherits all of the tag
attributes of its superclass and adds the following tag attributes:
<s:GridColumn Properties dataField="null" dataTipField="null" dataTipFormatter="null" dataTipFunction="null" editable="true" formatter="null" headerRenderer="null" headerText="value of dataField" imeMode="null" itemEditor="null" itemRenderer="null" itemRendererFunction="null" labelFunction="null" maxWidth="NaN" minWidth="20" rendererIsEditable="false" resizeable="true" showDataTips="undefined" sortable="true" sortCompareFunction="null" sortDescending="false" visible="true" width="NaN" />]]>
此方法使用
如果
如果
如果
item[dataField].toString()
如果格式化程序已指定,则此方法的值为:
formatter.format(item[dataField])
如果
如果
此属性的值不一定是列标题中显示的 String。此属性只用于访问数据提供程序中的数据。有关详细信息,请参阅
如果列或其网格指定
如果此列或其网格指定了
如果格式化程序的
默认情况下,如果
例如,您具有包含 lastName 和 firstName 字段的数据提供程序,但您希望将全名显示为数据提示。可以为
dataTipFunction(item:Object, column:GridColumn):String
典型的函数可能连接项的 firstName 和 lastName 属性,或对 Date 值属性设置某种自定义格式。
如果格式化程序的
默认的项编辑器是 DefaultGridItemEditor 类,可用于编辑简单的文本字段。可以通过创建 GridItemEditor 类的子类来创建自定义项呈示器。自定义项编辑器可以在网格的整个行中写入数据,以定义更复杂的编辑器。
为
itemRendererFunction(item:Object, column:GridColumn):IFactory
项呈示器函数的示例如下所示:
function myItemRendererFunction(item:Object, column:GridColumn):IFactory { return (item is Array) ? myArrayItemRenderer : myItemRenderer; }
默认项呈示器为 DefaultGridItemRenderer 类,它可将数据项显示为文本。可以通过创建 GridItemRenderer 类的子类来创建自定义项呈示器。自定义项呈示器可以访问网格的整个行中的数据,以定义单元格的更复杂视觉表示。
默认值为关联的网格控件的
可以使用 label 函数将多个数据提供程序项的值合并为单个字符串。如果已指定,此属性由
为
labelFunction(item:Object, column:GridColumn):String
典型的 label 函数可以连接数据提供程序项的 firstName 和 lastName 属性,或对 Date 值属性设置某种自定义格式。
如果将此属性设置为
如果将此属性设置为
如果未定义此属性的值(默认情况),则关联网格的
sortCompareFunction 的签名必须与以下内容匹配:
sortCompareFunction(obj1:Object, obj2:Object, column:GridColumn):int
函数应该基于对象比较结果返回值:
此函数可以使用列参数编写通用的 compare 函数。
注意:
如果 dataProvider 不是 ICollectionView,则此属性不起作用。
设置此属性不会开始进行排序;这只是在设置排序方向。在调用
如果数据提供程序不是 ICollectionView,则此属性不起作用。
如果已定义
如果未定义
如果未定义
如果数据提供程序不是 ICollectionView,则此属性不起作用。
所有工厂生成的可视元素都可以使用此接口,除了以下 itemRenderer:
public function prepareGridVisualElement(grid:Grid, rowIndex:int, columnIndex:int):void { caretStroke.color = grid.dataGrid.getStyle("caretColor"); }
DataGridSkin.mxml 中有更多像这样的示例。请注意,如果不需要添加的灵活性,则自定义 DataGrid 外观可视元素可以选择不实现此接口。
如果可视元素是由使用工厂值的 DataGrid 外观部件生成的,如 selectionIndicator 或 hoverIndicator,则
可以创建自定义项编辑器,而不是使用 DefaultGridItemEditor。项编辑器必须实现 spark.components.gridClasses.IGridItemEditor 接口。通常,可以将项编辑器创建为 spark.components.gridClasses.GridItemEditor 类的子类。
在 ActionsScript 中使用常量,如下例所示:
myDG.selectionMode = GridSelectionMode.MULTIPLE_CELLS;
在 MXML 中,使用常量的 String 值,如下例所示:
<s:DataGrid id="myGrid" width="350" height="150" selectionMode="multipleCells"> ... </s:DataGrid>
项呈示器与网格的每一列相关联。使用
默认情况下,项呈示器不会剪切至单元格的边界。如果您的呈示器扩展到单元格的边界之外,则您可以将
不支持 DataGrid 项呈示器中的转换。GridItemRenderer 类已禁用了其
效率注意事项
DataGrid 滚动和启动性能与项呈示器复杂性以及 DataGrid 的 Scroller 中可见的项呈示器的数目直接相关。自定义 GridItemRenderer 实例需要被多次使用和重用,因此尽可能简单和高效地定义它们非常重要。
如果项呈示器的职责仅限于显示一行或多行文本,则开发人员应慎重考虑使用 DefaultItemRenderer 类,它使用起来非常经济(将仅部署在 Windows 上的应用程序,用户转而使用 UITextFieldGridItemRenderer 类可以获得一些其它的性能)。使用 GridItemRenderer 将 GridColumn 的 dataField 显示为文本的最高效方式是通过
包含属性依赖于项呈示器数据的多个可视元素的项呈示器可以使用数据绑定定义这些属性的值。该方法将产生易于阅读和维护的 MXML 代码,如果可见项呈示器的数目有限,它的性能可能合适(请参阅 DataGrid
GridItemRenderer 应尽可能简单。要获得最佳性能,请将组件数目以及层次结构的深度降到最低。如果此方法适用,您可以使用显式位置和大小定义布局,而无需使用约束。带有
此处介绍的各种 GridItemRenderer 配置示例可以在示例部分中找到。
不可直接调用此方法。它将被 DataGrid 实现调用。
如果所需的行为与默认行为不同,则 GridItemRenderer 的子类必须覆盖此方法才会返回值。
在 Flex 4.0 中,三种主要状态为“normal”、“hovered”和“selected”。在 Flex 4.5 中,添加了“down”和“downAndSelected”。
支持的完整状态集如下所示(按照优先级的顺序):
此方法可以用来配置呈示器的所有可视元素和属性。使用此方法与将
在调用
不可直接调用此方法。它将被 DataGrid 实现调用。
项呈示器可以覆盖此属性定义以访问网格的整个行的数据。
与 List 项呈示器不同,Grid 项呈示器不专门负责显示按下指示符。Grid 本身为所选行或单元格呈示按下指示符。项呈示器还可以更改其 visual 属性以强调正在按此项呈示器。
与 List 项呈示器不同,Grid 项呈示器不专门负责显示内容以指明呈示器或其行位于鼠标下。Grid 本身为悬浮行或单元格自动显示 hoverIndicator 外观部件。Grid 项呈示器还可以更改其属性以强调在此项呈示器上悬浮。
与 List 项呈示器不同,Grid 项呈示器不专门负责显示内容以指明它们是选定内容的一部分。Grid 本身为选定行或单元格自动显示 selectionIndicator 外观部件。项呈示器还可以更改其 visual 属性以强调它属于选定内容。
与 List 项呈示器不同,Grid 项呈示器不专门负责显示内容以指明它们的单元格或行含有插入标记。Grid 本身为插入标记行或单元格自动显示 caretIndicator 外观部件。项呈示器还可以更改其 visual 属性以强调它含有插入标记。
项编辑器的所有属性都由所有者在启动编辑器会话期间设置。
在关闭编辑器时,可以保存或取消输入的值。如果保存,编辑器将调用
无需直接调用此方法。应仅由承载项编辑器的控件来调用。
无需直接调用此方法。应仅由承载项编辑器的控件来调用。
无需直接调用此方法。应仅由承载项编辑器的控件来调用。要保存并关闭编辑器,请调用项呈示器所有者的
<s:GridItemEditor>
tag inherits all of the tag
attributes of its superclass and adds the following tag attributes:
<s:GridItemEditor Properties column="null" data="null" imeMode="null" itemRenderer="null" rowIndex="0" value="null" />]]>
项编辑器与网格的每一列相关联。使用
无需直接调用此方法。应仅由承载项编辑器的控件来调用。
无需直接调用此方法。应仅由承载项编辑器的控件来调用。
无需直接调用此方法。应仅由承载项编辑器的控件来调用。要保存并关闭编辑器,请调用项呈示器所有者的
flash.system.IMEConversionMode 类定义此属性的有效值的常量。您还可以指定
默认情况下,当执行保存操作后关闭编辑器时,
许多自定义项呈示器覆盖此属性的 getter 和 setter 方法。覆盖 setter 方法以根据单元格值初始化编辑器。覆盖 getter 方法以将新的单元格值返回到
呈示器的所有属性都在执行父代的
如果不再需要项呈示器(由于要将它添加到内部可重用呈示器“空闲”列表中或不再需要它),则调用 IGridItemRenderer
不可直接调用此方法。它将被 DataGrid 实现调用。
此方法可以用来配置呈示器的所有可视元素和属性。使用此方法与将
在调用
不可直接调用此方法。它将被 DataGrid 实现调用。
与 List 项呈示器不同,Grid 项呈示器不专门负责显示按下指示符。Grid 本身为所选行或单元格呈示按下指示符。项呈示器还可以更改其 visual 属性以强调正在按此项呈示器。
与 List 项呈示器不同,Grid 项呈示器不专门负责显示内容以指明呈示器或其行位于鼠标下。Grid 本身为悬浮行或单元格自动显示 hoverIndicator 外观部件。Grid 项呈示器还可以更改其属性以强调在此项呈示器上悬浮。
如果
与 List 项呈示器不同,Grid 项呈示器不专门负责显示内容以指明它们是选定内容的一部分。Grid 本身为选定行或单元格自动显示 selectionIndicator 外观部件。项呈示器还可以更改其 visual 属性以强调它属于选定内容。
与 List 项呈示器不同,Grid 项呈示器不专门负责显示内容以指明它们的单元格或行含有插入标记。Grid 本身为插入标记行或单元格自动显示 caretIndicator 外观部件。项呈示器还可以更改其 visual 属性以强调它含有插入标记。
下例显示了将 ComboBoxGridItemEditor 用作其项编辑器的 GridColumn:
<s:GridColumn dataField="quant" headerText="Qty"> <s:itemEditor> <fx:Component> <s:ComboBoxGridItemEditor> <s:dataProvider> <s:ArrayList> <fx:int>0</fx:int> <fx:int>1</fx:int> <fx:int>2</fx:int> <fx:int>3</fx:int> </s:ArrayList> </s:dataProvider> </s:ComboBoxGridItemEditor> </fx:Component> </s:itemEditor> </s:GridColumn>