2009-09-01 18 views
2

私はリンクをどのようにデータグリッドに置くことができるか尋ねたがっています。私のdataProviderはfolling xmlですDatagrid(flex)内のリンク

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

確かにいくつかの項目があります。今私はラベルとして名前を表示し、URLが開いている行をクリックすると、データグリッドを持っている。

誰も私にそのことを助けることができますか?私はアイテムのレンダラーについていくつかのことを知っていますが、アイテムレンダラーにURLをどのように与えることができるのか分かりません。多分、クラスファクトで?しかし、特定のアイテムレンダラーに与えられるURLをどのように制御できますか?事前に

おかげ

セバスチャン

+0

ok ...インラインアイテムレンダラーを使用することでこれは簡単ですが、どんな提案もまだ歓迎されています –

+0

データプロバイダのアイテムにはラベルとデータプロパティが含まれていますか?あなたはデータプロパティにURLを保存できませんか? –

答えて

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> 

このアイテムをクリックすると、アクションが実行されます。

関連する問題