原文网址:http://nlslzf.iteye.com/blog/228038
package com.yyhy.flex.util {
import flash.events.KeyboardEvent;
import flash.events.TextEvent;
import flash.text.TextField;
import flash.text.TextFieldType;
import mx.controls.*;
import mx.controls.dataGridClasses.DataGridColumn;
public class EIDataGrid
extends DataGrid {
public function EIDataGrid() {
super ();
this .addEventListener(KeyboardEvent.KEY_DOWN,KeyDownHandler);
this .addEventListener(KeyboardEvent.KEY_UP,KeyUpHandler); }
private function KeyDownHandler(event:KeyboardEvent):
void {
if (event.ctrlKey && !
this .getChildByName(
"clipboardProxy" )) { var textField:TextField =
new TextField(); textField.name =
"clipboardProxy" ;
this .addChild(textField); textField.visible =
false ; textField.type = TextFieldType.INPUT; textField.multiline =
true ; textField.text = getTextFromItems(
this .selectedItems); textField.setSelection(
0 , textField.text.length -
1 ); textField.addEventListener(TextEvent.TEXT_INPUT, clipboardProxyPasteHandler); systemManager.stage.focus = textField; } }
private function KeyUpHandler(event:KeyboardEvent):
void {
if (!event.ctrlKey) { var textField:TextField = TextField(
this .getChildByName(
"clipboardProxy" ));
if (textField) {
this .removeChild(textField); } } }
private function clipboardProxyPasteHandler(event:TextEvent):
void { var items:Array = getItemsFromText(event.text);
for each (var item:Object in items)
this .dataProvider.addItem(item); }
private function getItemsFromText(text:String):Array { var rows:Array = text.split(
"\n" );
if (!rows[rows.length -
1 ]) rows.pop(); var columns:Array =
this .columns; var itemsFromText:Array = [];
for each (var rw:String in rows) { var fields:Array = rw.split(
"\t" ); var n:
int = Math.min(columns.length, fields.length); var item:Object = {};
for (var i:
int =
0 ; i < n; i++) item[columns[i].dataField] = fields[i]; itemsFromText.push(item); }
return itemsFromText; }
private function getTextFromItems(items:Array):String { var columns:Array =
this .columns; var textFromItems:String =
"" ;
for each (var i: DataGridColumn in columns) { textFromItems += i.headerText +
"\t" ; } textFromItems +=
"\n" ;
for each (var it:Object in items) {
for each (var c: DataGridColumn in columns) textFromItems += it[c.dataField] +
"\t" ; textFromItems +=
"\n" ; }
return textFromItems; } } }
相关资源:敏捷开发V1.0.pptx