Package | spark.components.gridClasses |
Class | public class GridItemRenderer |
Inheritance | GridItemRenderer ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Implements | IGridItemRenderer |
Subclasses | DefaultGridHeaderRenderer, DefaultGridHeaderRenderer |
Language Version: | ActionScript 3.0 |
Product Version: | Flex 4.5 |
Runtime Versions: | Flash Player 10, AIR 2.5 |
Item renderers are associated with each column of a grid.
Set the item renderer for a column by using
the GridColumn.itemRenderer property
.
By default, an item renderer does not clip to the boundaries of the cell.
If your renderer extends past the bounds of the cell, you can set
clipAndEnableScrolling
to true
to clip the renderer to the bounds
of the cell.
Transitions in DataGrid item renderers aren't supported. The GridItemRenderer class
has disabled its transitions
property so setting it will have no effect.
Efficiency Considerations
DataGrid scrolling and startup performance are directly linked to item renderer complexity and the number of item renderers that are visible within the DataGrid's scroller. Custom GridItemRenderer instances are used and reused repeatedly so it's important to define them as simply and efficiently as possible.
If an item renderer's responsibility is limited to displaying
one or more lines of text, then developers should seriously
consider using the DefaultItemRenderer class which does so very
economically (an application that's only going to be deployed on
Windows one can gain some additional performance by using the
UITextFieldGridItemRenderer class instead). The most efficient
way to use GridItemRenderer to display the GridColumn's dataField
as text is to identify the GridItemRenderer's text displaying
element with id="labelDisplay"
. The labelDisplay
component must be a TextBase
subclass like
Label
or RichText
. You might take this
approach, instead of just using DefaultGridItemRenderer, if your
item renderer included some additional elements that did not
depend on the item renderer's data, like borders or other graphic
elements.
An item renderer that contains more than one visual element
whose properties depend on the item renderer's data can use data
binding to define the values of those properties. This approach
yields MXML code that's straightforward to read and maintain and
its performance may be adequate if the number of visible item
renderers is limited (see the DataGrid requestedRowCount
and requestedColumnCount
properties). The most efficient
way to configure this kind of item renderer is to override its
prepare()
method and do the work there. The
renderer's prepare()
method is called each time the
renderer is redisplayed and so it's important that it's coded
efficiently. If your item renderer is stateful, for example if it
caches internal values, you can clear its state in its
discard()
method. The discard()
method
is called each time the renderer is moved to the DataGrid's
internal free list, where it's available for reuse.
GridItemRenderers should be as simple as possible. To gain the
best possible performance, minimize the number of components, and
the depth of the hierarchy. If it's practical, use explicit
positions and sizes rather than constraints to define the layout.
DataGrid's with variableRowHeight="false"
(the
default) tend to perform better, likewise for
showDataTips="false"
(the default) and
clipAndEnableScrolling="false"
(the default).
Examples of the various GridItemRenderer configurations described here are available in the examples section.
Default MXML PropertymxmlContent
More examples
Related API Elements
spark.components.Grid
spark.components.gridClasses.GridColumn
spark.components.gridClasses.GridColumn.itemRenderer
spark.skins.spark.DefaultGridItemRenderer
Property | Defined By | ||
---|---|---|---|
![]() | accessibilityImplementation : AccessibilityImplementation
The current accessibility implementation (AccessibilityImplementation)
for this InteractiveObject instance. | InteractiveObject | |
![]() | accessibilityProperties : AccessibilityProperties
The current accessibility options for this display object. | DisplayObject | |
![]() | alpha : Number
Indicates the alpha transparency value of the object specified. | DisplayObject | |
![]() | blendShader : Shader [write-only]
Sets a shader that is used for blending the foreground and background. | DisplayObject | |
![]() | buttonMode : Boolean
Specifies the button mode of this sprite. | Sprite | |
![]() | cacheAsBitmap : Boolean
If set to true, Flash runtimes cache an internal bitmap representation of the
display object. | DisplayObject | |
![]() | cacheAsBitmapMatrix : Matrix
If non-null, this Matrix object defines how a display object is rendered when
cacheAsBitmap is set to true. | DisplayObject | |
![]() | constructor : Object
A reference to the class object or constructor function for a given object instance. | Object | |
![]() | contextMenu : NativeMenu
Specifies the context menu associated with this object. | InteractiveObject | |
![]() | dropTarget : DisplayObject [read-only]
Specifies the display object over which the sprite is being dragged, or on
which the sprite was dropped. | Sprite | |
![]() | filters : Array
An indexed array that contains each filter object currently associated with the display object. | DisplayObject | |
![]() | focusRect : Object
Specifies whether this object displays a focus rectangle. | InteractiveObject | |
![]() | graphics : Graphics [read-only]
Specifies the Graphics object that belongs to this sprite where vector
drawing commands can occur. | Sprite | |
![]() | hitArea : Sprite
Designates another sprite to serve as the hit area for a sprite. | Sprite | |
![]() | loaderInfo : LoaderInfo [read-only]
Returns a LoaderInfo object containing information about loading the file
to which this display object belongs. | DisplayObject | |
![]() | metaData : Object
Obtains the meta data object of the DisplayObject instance if meta data was stored alongside the
the instance of this DisplayObject in the SWF file through a PlaceObject4 tag. | DisplayObject | |
![]() | mouseChildren : Boolean
Determines whether or not the children of the object are mouse, or user input device, enabled. | DisplayObjectContainer | |
![]() | mouseEnabled : Boolean
Specifies whether this object receives mouse, or other user input, messages. | InteractiveObject | |
![]() | mouseX : Number [read-only]
Indicates the x coordinate of the mouse or user input device position, in pixels. | DisplayObject | |
![]() | mouseY : Number [read-only]
Indicates the y coordinate of the mouse or user input device position, in pixels. | DisplayObject | |
![]() | name : String
Indicates the instance name of the DisplayObject. | DisplayObject | |
![]() | needsSoftKeyboard : Boolean
Specifies whether a virtual keyboard (an on-screen, software keyboard) should display
when this InteractiveObject instance receives focus. | InteractiveObject | |
![]() | opaqueBackground : Object
Specifies whether the display object is opaque with a certain background color. | DisplayObject | |
![]() | root : DisplayObject [read-only]
For a display object in a loaded SWF file, the root property is the
top-most display object in the portion of the display list's tree structure represented by that SWF file. | DisplayObject | |
![]() | scale9Grid : Rectangle
The current scaling grid that is in effect. | DisplayObject | |
![]() | scrollRect : Rectangle
The scroll rectangle bounds of the display object. | DisplayObject | |
![]() | softKeyboard : String
Controls the appearance of the soft keyboard. | InteractiveObject | |
![]() | softKeyboardInputAreaOfInterest : Rectangle
Defines the area that should remain on-screen when a soft keyboard is displayed (not available on iOS). | InteractiveObject | |
![]() | soundTransform : flash.media:SoundTransform
Controls sound within this sprite. | Sprite | |
![]() | stage : Stage [read-only]
The Stage of the display object. | DisplayObject | |
![]() | tabChildren : Boolean
Determines whether the children of the object are tab enabled. | DisplayObjectContainer | |
![]() | tabEnabled : Boolean
Specifies whether this object is in the tab order. | InteractiveObject | |
![]() | tabIndex : int
Specifies the tab ordering of objects in a SWF file. | InteractiveObject | |
![]() | textSnapshot : flash.text:TextSnapshot [read-only]
Returns a TextSnapshot object for this DisplayObjectContainer instance. | DisplayObjectContainer | |
![]() | useHandCursor : Boolean
A Boolean value that indicates whether the pointing hand (hand cursor) appears when the pointer rolls
over a sprite in which the buttonMode property is set to true. | Sprite |
Method | Defined By | ||
---|---|---|---|
![]() | addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
Registers an event listener object with an EventDispatcher object so that the listener
receives notification of an event. | EventDispatcher | |
![]() |
Indicates whether the security restrictions
would cause any display objects to be omitted from the list returned by calling
the DisplayObjectContainer.getObjectsUnderPoint() method
with the specified point point. | DisplayObjectContainer | |
![]() |
Determines whether the specified display object is a child of the DisplayObjectContainer instance or
the instance itself. | DisplayObjectContainer | |
![]() |
Returns a rectangle that defines the area of the display object relative to the coordinate system
of the targetCoordinateSpace object. | DisplayObject | |
![]() |
Returns the child display object that exists with the specified name. | DisplayObjectContainer | |
![]() |
Returns an array of objects that lie under the specified point and are children
(or grandchildren, and so on) of this DisplayObjectContainer instance. | DisplayObjectContainer | |
![]() |
Returns a rectangle that defines the boundary of the display object,
based on the coordinate system defined by the targetCoordinateSpace
parameter, excluding any strokes on shapes. | DisplayObject | |
![]() |
Converts the point object from the Stage (global) coordinates
to the display object's (local) coordinates. | DisplayObject | |
![]() |
Converts a two-dimensional point from the Stage (global) coordinates to a
three-dimensional display object's (local) coordinates. | DisplayObject | |
![]() |
Checks whether the EventDispatcher object has any listeners registered for a specific type
of event. | EventDispatcher | |
![]() |
Indicates whether an object has a specified property defined. | Object | |
![]() |
Evaluates the bounding box of the display object to see if it overlaps or intersects with the
bounding box of the obj display object. | DisplayObject | |
![]() |
Evaluates the display object to see if it overlaps or intersects with the
point specified by the x and y parameters. | DisplayObject | |
![]() |
Indicates whether an instance of the Object class is in the prototype chain of the object specified
as the parameter. | Object | |
![]() |
Converts a three-dimensional point of the three-dimensional display
object's (local) coordinates to a two-dimensional point in the Stage (global) coordinates. | DisplayObject | |
![]() |
Converts the point object from the display object's (local) coordinates to the
Stage (global) coordinates. | DisplayObject | |
![]() |
Indicates whether the specified property exists and is enumerable. | Object | |
![]() |
Removes all child DisplayObject instances from the child list of the DisplayObjectContainer instance. | DisplayObjectContainer | |
![]() |
Removes a listener from the EventDispatcher object. | EventDispatcher | |
![]() |
Raises a virtual keyboard. | InteractiveObject | |
![]() |
Sets the availability of a dynamic property for loop operations. | Object | |
![]() |
Lets the user drag the specified sprite. | Sprite | |
![]() |
Lets the user drag the specified sprite on a touch-enabled device. | Sprite | |
![]() |
Recursively stops the timeline execution of all MovieClips rooted at this object. | DisplayObjectContainer | |
![]() |
Ends the startDrag() method. | Sprite | |
![]() |
Ends the startTouchDrag() method, for use with touch-enabled devices. | Sprite | |
![]() |
Returns the string representation of this object, formatted according to locale-specific conventions. | Object | |
![]() |
Returns the primitive value of the specified object. | Object | |
![]() |
Checks whether an event listener is registered with this EventDispatcher object or any of
its ancestors for the specified event type. | EventDispatcher |
Method | Defined By |
---|
Event | Summary | Defined By | ||
---|---|---|---|---|
![]() | [broadcast event] Dispatched when the Flash Player or AIR application gains operating system focus and becomes active. | EventDispatcher | ||
![]() | Dispatched when a display object is added to the display list. | DisplayObject | ||
![]() | Dispatched when a display object is added to the on stage display list, either directly or through the addition of a sub tree in which the display object is contained. | DisplayObject | ||
![]() | Dispatched when the user selects 'Clear' (or 'Delete') from the text context menu. | InteractiveObject | ||
![]() | Dispatched when a user presses and releases the main button of the user's pointing device over the same InteractiveObject. | InteractiveObject | ||
![]() | Dispatched when a user gesture triggers the context menu associated with this interactive object in an AIR application. | InteractiveObject | ||
![]() | Dispatched when the user activates the platform-specific accelerator key combination for a copy operation or selects 'Copy' from the text context menu. | InteractiveObject | ||
![]() | Dispatched when the user activates the platform-specific accelerator key combination for a cut operation or selects 'Cut' from the text context menu. | InteractiveObject | ||
![]() | [broadcast event] Dispatched when the Flash Player or AIR application operating loses system focus and is becoming inactive. | EventDispatcher | ||
![]() | Dispatched when a user presses and releases the main button of a pointing device twice in rapid succession over the same InteractiveObject when that object's doubleClickEnabled flag is set to true. | InteractiveObject | ||
![]() | [broadcast event] Dispatched when the playhead is entering a new frame. | DisplayObject | ||
![]() | [broadcast event] Dispatched when the playhead is exiting the current frame. | DisplayObject | ||
![]() | Dispatched after a display object gains focus. | InteractiveObject | ||
![]() | Dispatched after a display object loses focus. | InteractiveObject | ||
![]() | [broadcast event] Dispatched after the constructors of frame display objects have run but before frame scripts have run. | DisplayObject | ||
![]() | Dispatched when the user creates a point of contact along the edge of the touch surface with an InteractiveObject instance, (such as tapping along the edge of the touch surface on Siri Remote for Apple TV) Some devices might also interpret this contact as a combination of several touch events, as well. | InteractiveObject | ||
![]() | Dispatched when the user presses two points of contact over the same InteractiveObject instance on a touch-enabled device (such as presses and releases two fingers over a display object on a mobile phone or tablet with a touch screen). | InteractiveObject | ||
![]() | Dispatched when the user moves a point of contact over the InteractiveObject instance on a touch-enabled device (such as moving a finger from left to right over a display object on a mobile phone or tablet with a touch screen). | InteractiveObject | ||
![]() | Dispatched when the user performs a rotation gesture at a point of contact with an InteractiveObject instance (such as touching two fingers and rotating them over a display object on a mobile phone or tablet with a touch screen). | InteractiveObject | ||
![]() | Dispatched when the user performs a swipe gesture at a point of contact with an InteractiveObject instance (such as touching three fingers to a screen and then moving them in parallel over a display object on a mobile phone or tablet with a touch screen). | InteractiveObject | ||
![]() | Dispatched when the user creates a point of contact with an InteractiveObject instance, then taps on a touch-enabled device (such as placing several fingers over a display object to open a menu and then taps one finger to select a menu item on a mobile phone or tablet with a touch screen). | InteractiveObject | ||
![]() | Dispatched when the user performs a zoom gesture at a point of contact with an InteractiveObject instance (such as touching two fingers to a screen and then quickly spreading the fingers apart over a display object on a mobile phone or tablet with a touch screen). | InteractiveObject | ||
![]() | This event is dispatched to any client app that supports inline input with an IME | InteractiveObject | ||
![]() | Dispatched when the user presses a key. | InteractiveObject | ||
![]() | Dispatched when the user attempts to change focus by using keyboard navigation. | InteractiveObject | ||
![]() | Dispatched when the user releases a key. | InteractiveObject | ||
![]() | Dispatched when a user presses and releases the middle button of the user's pointing device over the same InteractiveObject. | InteractiveObject | ||
![]() | Dispatched when a user presses the middle pointing device button over an InteractiveObject instance. | InteractiveObject | ||
![]() | Dispatched when a user releases the pointing device button over an InteractiveObject instance. | InteractiveObject | ||
![]() | Dispatched when a user presses the pointing device button over an InteractiveObject instance. | InteractiveObject | ||
![]() | Dispatched when the user attempts to change focus by using a pointer device. | InteractiveObject | ||
![]() | Dispatched when a user moves the pointing device while it is over an InteractiveObject. | InteractiveObject | ||
![]() | Dispatched when the user moves a pointing device away from an InteractiveObject instance. | InteractiveObject | ||
![]() | Dispatched when the user moves a pointing device over an InteractiveObject instance. | InteractiveObject | ||
![]() | Dispatched when a user releases the pointing device button over an InteractiveObject instance. | InteractiveObject | ||
![]() | Dispatched when a mouse wheel is spun over an InteractiveObject instance. | InteractiveObject | ||
![]() | Dispatched by the drag initiator InteractiveObject when the user releases the drag gesture. | InteractiveObject | ||
![]() | Dispatched by the target InteractiveObject when a dragged object is dropped on it and the drop has been accepted with a call to DragManager.acceptDragDrop(). | InteractiveObject | ||
![]() | Dispatched by an InteractiveObject when a drag gesture enters its boundary. | InteractiveObject | ||
![]() | Dispatched by an InteractiveObject when a drag gesture leaves its boundary. | InteractiveObject | ||
![]() | Dispatched by an InteractiveObject continually while a drag gesture remains within its boundary. | InteractiveObject | ||
![]() | Dispatched at the beginning of a drag operation by the InteractiveObject that is specified as the drag initiator in the DragManager.doDrag() call. | InteractiveObject | ||
![]() | Dispatched during a drag operation by the InteractiveObject that is specified as the drag initiator in the DragManager.doDrag() call. | InteractiveObject | ||
![]() | Dispatched when the user activates the platform-specific accelerator key combination for a paste operation or selects 'Paste' from the text context menu. | InteractiveObject | ||
![]() | Dispatched when the user lowers an active stylus past the proximity detection threshold of the screen. | InteractiveObject | ||
![]() | Dispatched when the user lifts an active stylus above the proximity detection threshold of the screen. | InteractiveObject | ||
![]() | Dispatched when the user moves an active stylus over the screen while remaining within the proximity detection threshold. | InteractiveObject | ||
![]() | Dispatched when the user moves an active stylus away from this InteractiveObject while remaining within the proximity detection threshold of the screen. | InteractiveObject | ||
![]() | Dispatched when the user moves an active stylus directly above this InteractiveObject while remaining within the proximity detection threshold of the screen. | InteractiveObject | ||
![]() | Dispatched when the user moves an active stylus away from this InteractiveObject and any of its children while remaining within the proximity detection threshold of the screen. | InteractiveObject | ||
![]() | Dispatched when the user moves an active stylus over this InteractiveObject from outside the object's tree of descendents in the display list (while remaining within the proximity detection threshold of the screen). | InteractiveObject | ||
![]() | Dispatched when a user releases the button on the pointing device after the user first pressed the button over an InteractiveObject instance and then moved the pointing device off of the InteractiveObject instance. | InteractiveObject | ||
![]() | Dispatched when a display object is about to be removed from the display list. | DisplayObject | ||
![]() | Dispatched when a display object is about to be removed from the display list, either directly or through the removal of a sub tree in which the display object is contained. | DisplayObject | ||
![]() | [broadcast event] Dispatched when the display list is about to be updated and rendered. | DisplayObject | ||
![]() | Dispatched when a user presses and releases the right button of the user's pointing device over the same InteractiveObject. | InteractiveObject | ||
![]() | Dispatched when a user presses the pointing device button over an InteractiveObject instance. | InteractiveObject | ||
![]() | Dispatched when a user releases the pointing device button over an InteractiveObject instance. | InteractiveObject | ||
![]() | Dispatched when the user moves a pointing device away from an InteractiveObject instance. | InteractiveObject | ||
![]() | Dispatched when the user moves a pointing device over an InteractiveObject instance. | InteractiveObject | ||
![]() | Dispatched when the user activates the platform-specific accelerator key combination for a select all operation or selects 'Select All' from the text context menu. | InteractiveObject | ||
![]() | Dispatched immediately after the soft keyboard is raised. | InteractiveObject | ||
![]() | Dispatched immediately before the soft keyboard is raised. | InteractiveObject | ||
![]() | Dispatched immediately after the soft keyboard is lowered. | InteractiveObject | ||
![]() | Dispatched when the value of the object's tabChildren flag changes. | InteractiveObject | ||
![]() | Dispatched when the object's tabEnabled flag changes. | InteractiveObject | ||
![]() | Dispatched when the value of the object's tabIndex property changes. | InteractiveObject | ||
![]() | Dispatched when a user enters one or more characters of text. | InteractiveObject | ||
![]() | Dispatched when the user first contacts a touch-enabled device (such as touches a finger to a mobile phone or tablet with a touch screen). | InteractiveObject | ||
![]() | Dispatched when the user removes contact with a touch-enabled device (such as lifts a finger off a mobile phone or tablet with a touch screen). | InteractiveObject | ||
![]() | Dispatched when the user touches the device, and is continuously dispatched until the point of contact is removed. | InteractiveObject | ||
![]() | Dispatched when the user moves the point of contact away from InteractiveObject instance on a touch-enabled device (such as drags a finger from one display object to another on a mobile phone or tablet with a touch screen). | InteractiveObject | ||
![]() | Dispatched when the user moves the point of contact over an InteractiveObject instance on a touch-enabled device (such as drags a finger from a point outside a display object to a point over a display object on a mobile phone or tablet with a touch screen). | InteractiveObject | ||
![]() | Dispatched when the user moves the point of contact away from an InteractiveObject instance on a touch-enabled device (such as drags a finger from over a display object to a point outside the display object on a mobile phone or tablet with a touch screen). | InteractiveObject | ||
![]() | Dispatched when the user moves the point of contact over an InteractiveObject instance on a touch-enabled device (such as drags a finger from a point outside a display object to a point over a display object on a mobile phone or tablet with a touch screen). | InteractiveObject | ||
![]() | Dispatched when the user lifts the point of contact over the same InteractiveObject instance on which the contact was initiated on a touch-enabled device (such as presses and releases a finger from a single point over a display object on a mobile phone or tablet with a touch screen). | InteractiveObject |
Styles are either common or associated with a specific theme. If the style is common, it can be used with any theme. If a style is associated with a specific theme, it can only be used if your application uses that theme.
<?xml version="1.0" encoding="utf-8"?> <!-- Demonstate how to control text wrapping in DataGrid GridItemRenderer item renderer. This DataGrid example demonstrates how to control text wrapping with a simple custom item renderer based on GridItemRenderer. All cells in this example display the same lengthy string which does not contain newlines. Note that the Flex text components unconditionally render newline characters that appear in the text. The "Label Renderer" column's renderer is a custom GridItemRenderer that displays its text with an s:Label component. We use the Label's maxDisplayedLines property to control line breaking and to include "..." truncation when the single line of text doesn't fit. Note also: this example's column widths and row heights are defined by the DataGrid's typicalItem. The typical item uses explicit newlines to create a string that occupies three lines and a reasonable column width. --> <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark"> <fx:Declarations> <fx:String id="sampleText">Lorem Ipsum is the standard dummy text of the typesetting industry.</fx:String> <fx:int id="maxDisplayedLines">0</fx:int> </fx:Declarations> <s:Panel title="Spark DataGrid Control Example which demonstrates how to control text wrapping in a GridItemRenderer" width="75%" height="75%" horizontalCenter="0" verticalCenter="0"> <s:controlBarContent> <s:VGroup> <s:CheckBox id="vrh" selected="@{dataGrid.variableRowHeight}" label="dataGrid.variableRowHeight={vrh.selected}"/> <s:CheckBox id="lb" selected="true" valueCommit="maxDisplayedLines=(lb.selected) ? 0 : 1" label="labelRenderer.maxDisplayedLines={maxDisplayedLines}"/> </s:VGroup> </s:controlBarContent> <s:DataGrid id="dataGrid" variableRowHeight="false" verticalCenter="0" horizontalCenter="0"> <s:columns> <s:ArrayList> <!-- Simple custom item renderer based on GridItemRenderer and Label. Prevent line breaking by setting maxDisplayedLines="1". --> <s:GridColumn dataField="value" headerText="Label Renderer"> <s:itemRenderer> <fx:Component> <s:GridItemRenderer> <s:Label id="labelDisplay" left="5" top="9" right="5" bottom="5" maxDisplayedLines="{outerDocument.maxDisplayedLines}"/> </s:GridItemRenderer> </fx:Component> </s:itemRenderer> </s:GridColumn> </s:ArrayList> </s:columns> <!-- The typicalItem defines column widths and the default row height. The text occpies two lines because we've used '\n' to introduce two newlines. Alternatively we could have used the odd XML ' ' escape to introduce two newlines (the value of the newline character is decimal 10). <s:DataItem value="Lorem Ipsum sample text. Lorem Ipsum sample text. "/> --> <s:typicalItem> <s:DataItem value="{'Lorem Ipsum sample text.\nLorem Ipsum sample text\n'}"/> </s:typicalItem> <s:ArrayCollection> <s:DataItem value="{sampleText}"/> <s:DataItem value="{sampleText}"/> <s:DataItem value="{sampleText}"/> </s:ArrayCollection> </s:DataGrid> </s:Panel> </s:Application>
<?xml version="1.0" encoding="utf-8"?> <!-- Examples of custom GridItemRenderers that use data binding to configure visual properties. The application's control bar slider can be used to change the the dataProvider items. The GridItemRenderer class is a Group that implements IGridItemRenderer and can be used as the top level "container" for a custom item renderer. Its data property is the dataProvider item for the row the item renderer appears on and its components can configure themselves by binding to the data property, or by overriding the renderer's prepare() method and configuring themselves imperatively with ActionScript code. All of the item renderers in this example use binding, which makes the code a little easier to read and modify. It's also less efficient than using a prepare() method override. The performance difference is most noticeable when the DataGrid is configured so that a large number of item renderers are visible. DataGrid item renderers are always sized to exactly fit the cell that they're rendering: their size matches the width of their column and the height of their row. The DataGrid enables interactive column resizing by default, so all of the item renderers need to defend against the possibility that their width will become arbitrarily small. The first column's item renderer just contains a Label. By specifying maxDisplayedLines="1" we ensure that the Label will truncate its text to fit the width it's given. The other columns' item renderers specify clipAndEnableScrolling="true" which just means that their fixed size contents will always be clipped to the bounds of the GridItemRenderer. This property -enables- scrolling, which means that one could actually scroll the contents of the item renderers when their width gets small, by setting the renderer's horizontalScrollPosition property. We do not do as much here. The "Name" column's item renderer demonstrates a special case: if the renderer contains a text component with id="labelDisplay", GridItemRenderer automatically sets the labelDisplay's text property to the value of data[column.dataField] per the GridItemRenderer label property. The first colunm also demonstrates using the styleName property to configure the Label's left, right, top, and fontSize styles. The "Statistics" column's item renderer demonstrates how binding can be used to configure the geometry of graphic elememnts. The data items' min, max, and value properties have been normalized to the range [0 100] to keep the bindings simple. The "Value" column's item renderer allows one to change data item's value property with a Slider. The "Call" column's item renderer demonstrates a slightly more complicated component layout and it also demonstates how the data item's value can be both displayed and edited. --> <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark"> <fx:Script> <![CDATA[ // Incrementally change all of the date items' min, max, value, and call properties. private function changeData(delta:Number):void { for each (var item:Object in dataGrid.dataProvider) { item.value = (item.value + delta) % 100; item.min = item.value * 0.5; item.max = item.value + ((100 - item.value) * 0.5); item.call = item.value > 50; } } ]]> </fx:Script> <fx:Style> .nameColumn { fontSize: 18; left: 5; right: 5; top: 9; } </fx:Style> <s:Panel title="Spark DataGrid Control Example of custom GridItemRenderers that use data binding to configure visual properties" width="75%" height="75%" horizontalCenter="0" verticalCenter="0"> <s:controlBarContent> <s:HGroup verticalAlign="baseline"> <s:Label text="Shake Data"/> <s:HSlider id="hsl" minimum="0" maximum="25" change="changeData(hsl.value)"/> </s:HGroup> </s:controlBarContent> <s:DataGrid id="dataGrid" left="5" right="5" top="5" bottom="5"> <s:columns> <s:ArrayList> <!-- By specifying id="labelDisplay" the Label component's text property is automatically set to the renderer's label, which is effectively the value of the item's name property. We've used styleName here to refer to a set of styles that could have also have been set inline. --> <s:GridColumn dataField="name" headerText="Name"> <s:itemRenderer> <fx:Component> <s:GridItemRenderer> <s:Label id="labelDisplay" maxDisplayedLines="1" styleName="nameColumn"/> </s:GridItemRenderer> </fx:Component> </s:itemRenderer> </s:GridColumn> <!-- This column's renderer displays the item's value, min, and max properties with a simple dial and bar chart defined with graphic primitives. The bar chart s:Rect elements specify scaleY="-1" so that the rectangles grow from the bottom of the renderer upwards. To keep things simple, most of the elements geometry is specified explicitly. Note also that min, max, and value have all been normalized to [0, 100]. --> <s:GridColumn dataField="value" headerText="Statistics"> <s:itemRenderer> <fx:Component> <s:GridItemRenderer clipAndEnableScrolling="true"> <s:Group left="5" top="5" bottom="5"> <s:Ellipse x="0" y="0" width="30" height="30"> <s:stroke> <s:SolidColorStroke color="0x272F32" weight="2"/> </s:stroke> <s:fill> <s:SolidColor color="0x9DBDC6"/> </s:fill> </s:Ellipse> <s:Line rotation="{(data.value / 100) * 360}" transformX="15" transformY="15" xFrom="15" yFrom="15" xTo="27" yTo="15"> <s:stroke> <s:SolidColorStroke color="0xFF3D2E" weight="3"/> </s:stroke> </s:Line> <s:Rect x="40" y="30" scaleY="-1" width="15" height="{(data.min / 100) * 30}"> <s:fill> <s:SolidColor color="0xFF3D2E"/> </s:fill> </s:Rect> <s:Rect x="60" y="30" scaleY="-1" width="15" height="{(data.max / 100) * 30}"> <s:fill> <s:SolidColor color="0xFF3D2E"/> </s:fill> </s:Rect> </s:Group> </s:GridItemRenderer> </fx:Component> </s:itemRenderer> </s:GridColumn> <!-- This column's renderer displays the data item's value property with a slider. The binding is specified with "@{data.value}", which indicates that it's bidirection, so changing the slider also changes the dataProvider item. --> <s:GridColumn dataField="value" headerText="Value"> <s:itemRenderer> <fx:Component> <s:GridItemRenderer clipAndEnableScrolling="true"> <s:HSlider left="5" right="5" verticalCenter="0" minimum="{data.min}" maximum="{data.max}" value="@{data.value}"/> </s:GridItemRenderer> </fx:Component> </s:itemRenderer> </s:GridColumn> <!-- Display the boolean data item call property with a checkbox, radio button, and a text field. The call value can be changed with the checkbox. --> <s:GridColumn dataField="call" headerText="Call"> <s:itemRenderer> <fx:Component> <s:GridItemRenderer clipAndEnableScrolling="true"> <s:HGroup left="5" top="9" right="5" verticalAlign="baseline"> <s:CheckBox selected="@{data.call}"/> <s:RadioButton selected="{data.call}" enabled="false"/> <s:TextInput text="{data.call}" enabled="false"/> </s:HGroup> </s:GridItemRenderer> </fx:Component> </s:itemRenderer> </s:GridColumn> </s:ArrayList> </s:columns> <s:ArrayCollection> <s:DataItem min="10" max="85" value="15" name="Abrasive" price="100.11" call="false"/> <s:DataItem min="15" max="75" value="25" name="Brush" price="110.01" call="true"/> <s:DataItem min="30" max="65" value="45" name="Clamp" price="120.02" call="false"/> <s:DataItem min="20" max="85" value="65" name="Drill" price="130.03" call="true"/> <s:DataItem min="40" max="95" value="85" name="Epoxy" price="140.04" call="false"/> <s:DataItem min="70" max="99" value="95" name="File" price="150.05" call="true"/> <s:DataItem min="60" max="85" value="80" name="Gouge" price="160.06" call="false"/> <s:DataItem min="40" max="70" value="60" name="Hook" price="170.07" call="true"/> <s:DataItem min="10" max="40" value="20" name="Ink" price="180.08" call="false"/> <s:DataItem min="5" max="30" value="10" name="Jack" price="190.09" call="true"/> </s:ArrayCollection> </s:DataGrid> </s:Panel> </s:Application>
<?xml version="1.0" encoding="utf-8"?> <!-- Examples of custom GridItemRenderers that use the prepare() method to configure visual properties. This example is identical to DataGridCustomBindingRenderer.as except that instead of using data bindings, all visual elements are configured by GridItemRenderer/prepare() method overrides. --> <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark"> <fx:Script> <![CDATA[ // Incrementally change all of the date items' min, max, value, and call properties. private function changeData(delta:Number):void { for each (var item:Object in dataGrid.dataProvider) { item.value = (item.value + delta) % 100; item.min = (item.min + delta) % 100; item.max = (item.max + delta) % 100; item.call = item.value > 50; } } ]]> </fx:Script> <fx:Style> .nameColumn { fontSize: 18; left: 5; right: 5; top: 9; } </fx:Style> <s:Panel title="Spark DataGrid Control Example of custom GridItemRenderers that use the prepare() method to configure visual properties" width="75%" height="75%" horizontalCenter="0" verticalCenter="0"> <s:controlBarContent> <s:HGroup verticalAlign="baseline"> <s:Label text="Shake Data"/> <s:HSlider id="hsl" minimum="0" maximum="50" change="changeData(hsl.value)"/> </s:HGroup> </s:controlBarContent> <s:DataGrid id="dataGrid" left="5" right="5" top="5" bottom="5"> <s:columns> <s:ArrayList> <s:GridColumn dataField="name" headerText="Name"> <s:itemRenderer> <fx:Component> <s:GridItemRenderer> <fx:Script> <![CDATA[ override public function prepare(hasBeenRecycled:Boolean):void { nameLabel.text = data.name; } ]]> </fx:Script> <s:Label id="nameLabel" maxDisplayedLines="1" styleName="nameColumn"/> </s:GridItemRenderer> </fx:Component> </s:itemRenderer> </s:GridColumn> <s:GridColumn dataField="value" headerText="Statistics"> <s:itemRenderer> <fx:Component> <s:GridItemRenderer clipAndEnableScrolling="true"> <fx:Script> <![CDATA[ override public function prepare(hasBeenRecycled:Boolean):void { valueDial.rotation = (data.value / 100) * 360; minBar.height = (data.min / 100) * 30; maxBar.height = (data.max / 100) * 30; } ]]> </fx:Script> <s:Group left="5" top="5" bottom="5"> <s:Ellipse x="0" y="0" width="30" height="30"> <s:stroke> <s:SolidColorStroke color="0x272F32" weight="2"/> </s:stroke> <s:fill> <s:SolidColor color="0x9DBDC6"/> </s:fill> </s:Ellipse> <s:Line id="valueDial" transformX="15" transformY="15" xFrom="15" yFrom="15" xTo="27" yTo="15"> <s:stroke> <s:SolidColorStroke color="0xFF3D2E" weight="3"/> </s:stroke> </s:Line> <s:Rect id="minBar" x="40" y="30" scaleY="-1" width="15"> <s:fill> <s:SolidColor color="0xFF3D2E"/> </s:fill> </s:Rect> <s:Rect id="maxBar" x="60" y="30" scaleY="-1" width="15"> <s:fill> <s:SolidColor color="0xFF3D2E"/> </s:fill> </s:Rect> </s:Group> </s:GridItemRenderer> </fx:Component> </s:itemRenderer> </s:GridColumn> <s:GridColumn dataField="value" headerText="Value"> <s:itemRenderer> <fx:Component> <s:GridItemRenderer clipAndEnableScrolling="true"> <fx:Script> <![CDATA[ override public function prepare(hasBeenRecycled:Boolean):void { valueSlider.minimum = data.min; valueSlider.maximum = data.max; valueSlider.value = data.value; } private function valueChange():void { data.value = valueSlider.value; } ]]> </fx:Script> <s:HSlider id="valueSlider" left="5" right="5" verticalCenter="0" change="valueChange()"/> </s:GridItemRenderer> </fx:Component> </s:itemRenderer> </s:GridColumn> <s:GridColumn dataField="call" headerText="Call"> <s:itemRenderer> <fx:Component> <s:GridItemRenderer clipAndEnableScrolling="true"> <fx:Script> <![CDATA[ override public function prepare(hasBeenRecycled:Boolean):void { callCheckBox.selected = data.call; callRadioButton.selected = data.call; callTextInput.text = String(data.call); } private function valueChange():void { data.call = callCheckBox.selected; } ]]> </fx:Script> <s:HGroup left="5" top="9" right="5" verticalAlign="baseline"> <s:CheckBox id="callCheckBox" change="valueChange()"/> <s:RadioButton id="callRadioButton" enabled="false"/> <s:TextInput id="callTextInput" enabled="false"/> </s:HGroup> </s:GridItemRenderer> </fx:Component> </s:itemRenderer> </s:GridColumn> </s:ArrayList> </s:columns> <s:ArrayCollection> <s:DataItem min="10" max="85" value="15" name="Abrasive" price="100.11" call="false"/> <s:DataItem min="15" max="75" value="25" name="Brush" price="110.01" call="true"/> <s:DataItem min="30" max="65" value="45" name="Clamp" price="120.02" call="false"/> <s:DataItem min="20" max="85" value="65" name="Drill" price="130.03" call="true"/> <s:DataItem min="40" max="95" value="85" name="Epoxy" price="140.04" call="false"/> <s:DataItem min="70" max="99" value="95" name="File" price="150.05" call="true"/> <s:DataItem min="60" max="85" value="80" name="Gouge" price="160.06" call="false"/> <s:DataItem min="40" max="70" value="60" name="Hook" price="170.07" call="true"/> <s:DataItem min="10" max="40" value="20" name="Ink" price="180.08" call="false"/> <s:DataItem min="5" max="30" value="10" name="Jack" price="190.09" call="true"/> </s:ArrayCollection> </s:DataGrid> </s:Panel> </s:Application>
Wed Nov 21 2018, 06:34 AM -08:00