2009-09-01 130 views
2

我想問一下如何將鏈接放入數據網格中。我的dataProvider是folling xmlDatagrid中的鏈接(flex)

<xml> 
<item> 
    <name>A name</name> 
    <url>A url</name> 
</item> 
<item> 
    <name>Another name</name> 
    <url>Another url</name> 
</item> 
</xml> 

確定其中有更多項目。現在我想有一個數據網格,將該名稱顯示爲標籤,並在點擊該行時打開該網址。

任何人都可以幫助我嗎?我知道一些關於項目渲染的東西,但我不知道如何將網址提供給項目渲染器。也許有一個classfactory?但是,我怎樣才能控制哪個URL被賦予特定的項目渲染器?

在此先感謝

塞巴斯蒂安

+0

好的......我認爲這是通過使用內聯項目渲染器的微不足道的,但仍然歡迎任何建議 –

+0

數據提供程序中的項目包含標籤和數據屬性,對嗎?你可以不存儲的數據屬性中的網址? –

回答

1

可你只是做你想要用的是什麼點擊事件處理程序?

<mx:Script> 
    <![CDATA[ 
     import flash.net.navigateToURL; 


     protected function datagrid1_clickHandler(event:MouseEvent):void 
     { 
      if(dg1.selectedItem) 
      { 
       var request:URLRequest = new URLRequest(dg1.selectedItem.url); 
       navigateToURL(request); 
      } 
     } 

     [Bindable] 
     public var xml:XML = new XML(<xml> 
     <item> 
      <name>A name</name> 
      <url>http://www.google.com</url> 
     </item> 
     <item> 
      <name>Another name</name> 
      <url>http://www.yahoo.com</url> 
     </item> 
    </xml>); 
    ]]> 
</mx:Script> 
<mx:DataGrid id="dg1" editable="true" click="datagrid1_clickHandler(event)" dataProvider="{xml.children()}"> 
    <mx:columns> 
     <mx:DataGridColumn dataField="name" /> 
    </mx:columns> 
</mx:DataGrid> 
1

我認爲更好的方式來做到這一點是使用項目渲染:

與項目渲染這樣的配置您的數據網格:

<mx:DataGrid id="flashcardSetGrid" width="80%" maxHeight="800" > 
<mx:columns > 
    <mx:DataGridColumn itemRenderer="com.jeshurunsoftware.DgLinkButton"/> 
</mx:columns> 

然後,創建一個MXML組件(在本例中,打包在com.jeshurunsoftware.DgLinkBut​​ton.mxml中):

<s:MXDataGridItemRenderer xmlns:fx="http://ns.adobe.com/mxml/2009" 
         xmlns:s="library://ns.adobe.com/flex/spark" 
         xmlns:mx="library://ns.adobe.com/flex/mx" 
         focusEnabled="true"> 
     <mx:LinkButton id="lblData" label="{dataGridListData.label}" click="doSomething()" /> 
</s:MXDataGridItemRenderer> 

當你點擊這個項目時,你的動作將被執行。