flex4 datagrid里点击链接打开图片的方法

1. 在datagrid里面 加入链接


链接新窗口显示相关的图片


如下


<mx:DataGridColumn resizable="false" editable="false" headerText="查看大图" >
<mx:itemRenderer>
<fx:Component>
<mx:HBox width="100%" horizontalGap="0">
<mx:LinkButton label="查看大图" click="parentDocument.viewBigImage()" />

</mx:HBox>
</fx:Component>
</mx:itemRenderer>
</mx:DataGridColumn>

方法:

/**
* 原作查看大图 yanek 增加该方法
*/
public function viewBigImage():void{
//选中的行数
var k:int = this.originalPicList.selectedIndex;
//Alert.show("k="+k);

//获取dataGrid中的数据
var arr : Array =(originalPicList.dataProvider as ArrayCollection).source;
//获取当前选中行的dictType列的数据
var path:String = arr[k]["picUrlImage"].toString();

var path1:String = this.originalPicList.selectedItem.picUrlImage;


//Alert.show("path="+path);


var window : ViewBigImage = PopUpManager.createPopUp(this,ViewBigImage,true) as ViewBigImage;
window.owner = this;
//window.bigimage.source = path;
window.bigimage.source = path1;
PopUpManager.centerPopUp(window);//弹出子窗口

}
//////////////////////

注意:取得路径的方法 var path1:String = this.originalPicList.selectedItem.picUrlImage;


弹出新窗口代码:ViewBigImage.mxml

<?xml version="1.0" encoding="utf-8"?>
<s:TitleWindow xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600" close="PopUpManager.removePopUp(this)" title="大图查看" width="681" height="498">
<s:layout>
<s:BasicLayout/>
</s:layout>

<fx:Script>
<![CDATA[

import mx.collections.ArrayCollection;
import mx.controls.Alert;
import mx.core.Application;
import mx.managers.PopUpManager;
import mx.rpc.events.ResultEvent;


private var trme : String = Math.random().toString();
private var dtArray : ArrayCollection = new ArrayCollection();



protected function init():void{

}

protected function close_window():void{
PopUpManager.removePopUp(this);
}

]]>
</fx:Script>
<fx:Declarations>
<!-- 将非可视元素(例如服务、值对象)放在此处 -->
</fx:Declarations>
<mx:Image x="58" y="20" width="564" height="391" id="bigimage"/>
</s:TitleWindow>

你可能感兴趣的:(datagrid)