Datagrid中的链接(flex)

时间:2009-09-01 12:07:26

标签: flex flash actionscript itemrenderer

我想问一下如何将链接放入数据网格。我的dataProvider是folling xml

<xml>
 <item>
  <name>A name</name>
  <url>A url</name>
 </item>
 <item>
  <name>Another name</name>
  <url>Another url</name>
 </item>
</xml>
确定还有更多项目。现在我想要一个显示名称作为标签的数据网格,当点击该行时,将打开该网址。

任何人都可以帮助我吗?我知道有关项目渲染的一些内容,但我不知道如何将URL提供给项目渲染器。也许有一个班级?但是,如何控制为特定项呈示器指定的URL?

提前致谢

塞巴斯蒂安

2 个答案:

答案 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 :(得分: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>

单击此项目时,将执行您的操作。