Jun 29
接下来的例子演示了Flex的DateChooser控件中,如何利用selectableRange属性计算选中两个日期间天数。
让我们先来看一下Demo(可以右键View Source或点击这里察看源代码):
下面是完整代码(或点击这里察看):
Download: main.mxml
- <?xml version="1.0" encoding="utf-8"?>
- <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical" verticalAlign="middle" backgroundColor="white">
- <mx:Script>
- <![CDATA[
- import mx.controls.dataGridClasses.DataGridColumn;
- /* Number of milliseconds in a day. (1000 milliseconds per second * 60 seconds per minute * 60 minutes per hour * 24 hours per day) */
- private const MS_PER_DAY:uint = 1000 * 60 * 60 * 24;
- [Bindable]
- private var startDate:Date = new Date();
- [Bindable]
- private var endDate:Date = new Date(startDate.fullYear + 1, startDate.month, startDate.date);
- /* Default label function for the DataGrid. Basically just calls the DateFormatter on the current column's contents. */
- private function cellDateFormatter(item:Object, column:DataGridColumn):String {
- var columnDataField:String = column.dataField;
- return dateFormatter.format(item[columnDataField]);
- }
- /* Custom label function for the last column. Calculates the number of days between the start date and end date. */
- private function calculateDays(item:Object, column:DataGridColumn):String {
- var tempDate:Date = new Date(item.rangeEnd - item.rangeStart);
- return Math.round((tempDate.time / MS_PER_DAY) + 1).toString();
- }
- ]]>
- </mx:Script>
- <mx:DateFormatter id="dateFormatter" formatString="MMM D, YYYY" />
- <mx:HBox>
- <mx:DateChooser id="dateChooser" selectableRange="{{rangeStart:startDate, rangeEnd:endDate}}" allowMultipleSelection="true" />
- <mx:DataGrid id="selDates" dataProvider="{dateChooser.selectedRanges}" labelFunction="cellDateFormatter" verticalScrollPolicy="on" height="{dateChooser.height}">
- <mx:columns>
- <mx:DataGridColumn dataField="rangeStart" headerText="Range Start:" />
- <mx:DataGridColumn dataField="rangeEnd" headerText="Range End:" />
- <mx:DataGridColumn labelFunction="calculateDays" headerText="Number Days:" />
- </mx:columns>
- </mx:DataGrid>
- </mx:HBox>
- </mx:Application>
代码:Peter deHaan 翻译/整理/编译:minidxer
