flex datagrid 设置超链接
2009-10-16 15:20
246 查看
下面是一个在datagrid中设置超链接的一个小例子:
DataGridLink.mxml
LinkButtonDynamicEvent.as
UrlLinkRenderer.as
DataGridLink.mxml
<?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" preinitialize="preinit();" creationComplete="creationComplete();" viewSourceURL="srcview/index.html"> <mx:XMLList id="employees"> <employee> <name>Christina Coenraets</name> <phone>555-219-2270</phone> <email>ccoenraets@fictitious.com</email> </employee> <employee> <name>Joanne Wall</name> <phone>555-219-2012</phone> <email>jwall@fictitious.com</email> </employee> <employee> <name>Maurice Smith</name> <phone>555-219-2012</phone> <email>maurice@fictitious.com</email> </employee> <employee> <name>Mary Jones</name> <phone>555-219-2000</phone> <email>mjones@fictitious.com</email> </employee> </mx:XMLList> <mx:Script> <!--[CDATA[ import mx.collections.ArrayCollection; import mx.controls.dataGridClasses.DataGridColumn; import mx.controls.Alert; private var dataGridColumns:Array = new Array(); private var queryDataGridColumns:ArrayCollection = new ArrayCollection([ { headerText:"Name", dataField: "name",linkable:true} ,{ headerText:"Phone", dataField: "phone",linkable:false} ,{ headerText:"Email", dataField: "email",linkable:false} ]) ; private function preinit():void { for(var i:int = 0; i< queryDataGridColumns.length; i++) { var dataGridColumn:DataGridColumn = new DataGridColumn(); dataGridColumn.headerText = queryDataGridColumns.getItemAt(i).headerText ; dataGridColumn.dataField = queryDataGridColumns.getItemAt(i).dataField ; dataGridColumn.visible = true ; if(queryDataGridColumns.getItemAt(i).linkable) { var urlLinkRenderer:ClassFactory = new ClassFactory(UrlLinkRenderer); urlLinkRenderer.properties = { linkButtonLabel: queryDataGridColumns.getItemAt(i).dataField }; dataGridColumn.itemRenderer = urlLinkRenderer ; } dataGridColumns.push(dataGridColumn); } } private function creationComplete():void { createDataGrid(); this.addEventListener("DataGridLinkButtonClickEvent",linkButtonClickHandler); } private function createDataGrid():void { queryDataGrid.columns = dataGridColumns ; //BindingUtils.bindProperty(queryDataGrid,"dataProvider",this,"_queryDataGridProvider"); this.addChild(queryDataGrid); } private function linkButtonClickHandler(event:LinkButtonDynamicEvent):void { Alert.show(event.rowObject.name );//输出内容 } ]]--> </mx:Script> <mx:DataGrid top="5" left="5" right="5" bottom="5" dataProvider="{employees}" id="queryDataGrid"> </mx:DataGrid> </mx:Application>
LinkButtonDynamicEvent.as
package { import mx.events.DynamicEvent; public class LinkButtonDynamicEvent extends DynamicEvent { public var rowObject:Object ; public function LinkButtonDynamicEvent(type:String, object:Object) { super(type, true ); this.rowObject = object ; } } }
UrlLinkRenderer.as
package { import mx.controls.Label; import mx.controls.LinkButton; import flash.events.MouseEvent; import mx.events.DynamicEvent; public class UrlLinkRenderer extends LinkButton { private var newUrlLink:Label; private var orderByFilter:String; [Bindable] private var _linkButtonLabel:String = "" ; [Bindable] private var _rowObject:Object = new Object(); public function UrlLinkRenderer() { super(); this.setStyle("textDecoration","underline"); this.setStyle("textAlign","left"); this.addEventListener(MouseEvent.CLICK,linkButtonClickHandler); } /** * Override the set method for the data property. function also sets the data for the * container instance and sets member variables newId, newLabel, and newCheckBox.selected value * */ override public function set data(value:Object):void { super.data = value; // Make sure there is data if (value != null) { //Alert.show("test"); var str:String = ""; for (var i:Object in value) { str += i + " || " + value[i] + "/n"; } this._rowObject = value ; this.label = value[_linkButtonLabel]; } } public function set linkButtonLabel(value:String):void { _linkButtonLabel = value ; } public function get linkButtonLabel():String { return _linkButtonLabel ; } private function linkButtonClickHandler(e:MouseEvent):void { var event:LinkButtonDynamicEvent = new LinkButtonDynamicEvent("DataGridLinkButtonClickEvent",_rowObject); dispatchEvent(event); } } }
相关文章推荐
- flex DataGrid设置超链接
- Flex 之 Datagrid中列加入超链接
- Flex DataGrid设置不同行的渲染颜色
- (转载) Flex DataGrid Scrollbar滚动条x,y起始位置设置
- Flex按照比例设置dataGrid的列宽
- flex datagrid 动态设置行背景色
- Flex中通过设置headerHeight属性设置DataGrid控件头部高度的例子
- Adobe Flash Builder 4.5(Flex)DataGrid 竖直线颜色的设置及combobox下拉部分颜色的设置
- flex 使用AdvancedDataGrid进行表头列合并,设置每列背景颜色(1)
- Flex中设置按钮超链接的一种方法
- 关于EasyUI在Datagrid里面将某一列设置为超链接并传递当前行的某一参数传递给打开的对话框。
- flex 使用AdvancedDataGrid进行表头列合并,设置每列背景颜色(2)
- Flex利用Datagrid来设置全选和单选
- Flex中如何通过selectionColor和selectionDisabledColor样式设置DataGrid的行选中与无效时颜色的例子
- Flex 四种方式设置dataGrid表头颜色
- Flex DataGrid 自动设置列宽
- Flex 4中如何设置TextFlow内超链接样式的例子
- 按百分比设置Flex DataGrid的列宽
- Flex按照比例设置dataGrid的列宽
- Flex DataGrid 添加超链接