May 10
前面我们了解了HSlider格式化显示控件上的数据以及滑标控件HSlider中如何通过tickThickness样式设置标尺厚度/宽度,所以对于HSlider这个控件并不陌生,而DataGrid就更多了。
接下来的例子,演示了如何将HSlider控件作为DataGrid列中的一个项目显示。
让我们先来看一下Demo(可以右键View Source或点击这里察看源代码):
下面是完整代码(或点击这里查看):
Download: main.mxml
- <?xml version="1.0" encoding="utf-8"?>
- <!-- http://blog.flexexamples.com/2008/05/09/using-a-slider-control-as-a-datagrid-column-item-renderer-in-flex/ -->
- <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
- layout="vertical"
- verticalAlign="middle"
- backgroundColor="white">
- <mx:ArrayCollection id="arrColl">
- <mx:source>
- <mx:Array>
- <mx:Object label="Student A" score="85" />
- <mx:Object label="Student B" score="48" />
- <mx:Object label="Student C" score="71" />
- <mx:Object label="Student D" score="88" />
- <mx:Object label="Student E" score="24" />
- <mx:Object label="Student F" score="64" />
- <mx:Object label="Student G" score="76" />
- <mx:Object label="Student H" score="76" />
- <mx:Object label="Student I" score="93" />
- <mx:Object label="Student J" score="88" />
- <mx:Object label="Student K" score="48" />
- <mx:Object label="Student L" score="76" />
- </mx:Array>
- </mx:source>
- </mx:ArrayCollection>
- <mx:DataGrid id="dataGrid"
- dataProvider="{arrColl}"
- selectable="false"
- rowCount="6"
- width="500">
- <mx:columns>
- <mx:DataGridColumn dataField="label" />
- <mx:DataGridColumn dataField="score" />
- <mx:DataGridColumn dataField="score">
- <mx:itemRenderer>
- <mx:Component>
- <mx:HBox horizontalScrollPolicy="off"
- verticalScrollPolicy="off">
- <mx:Script>
- <![CDATA[
- import mx.events.SliderEvent;
- private function slider_change(evt:SliderEvent):void {
- data.score = evt.value;
- outerDocument.arrColl.refresh();
- }
- ]]>
- </mx:Script>
- <mx:HSlider minimum="0"
- maximum="100"
- value="{data.score}"
- liveDragging="true"
- snapInterval="1"
- width="100%"
- change="slider_change(event);" />
- </mx:HBox>
- </mx:Component>
- </mx:itemRenderer>
- </mx:DataGridColumn>
- </mx:columns>
- </mx:DataGrid>
- </mx:Application>
代码:Peter deHaan 翻译/整理/编译:minidxer
