【问题标题】:Links in Datagrid (flex)Datagrid 中的链接 (flex)
【发布时间】:2009-09-01 12:07:25
【问题描述】:

我想问一下如何将链接放入数据网格中。我的 dataProvider 是下面的 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 提供给项目渲染器。也许有一个classfactory?但是如何控制将哪个 url 提供给特定的项目渲染器?

提前致谢

塞巴斯蒂安

【问题讨论】:

  • 好的 ...我认为使用内联项渲染器这很简单,但仍然欢迎任何建议
  • 数据提供者中的一个项目包含一个标签和一个数据属性,对吧?你能不把 url 存储在 data 属性中吗?

标签: apache-flex flash actionscript itemrenderer


【解决方案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>

【讨论】:

    【解决方案2】:

    我认为更好的方法是使用项目渲染器:

    使用这样的项目渲染器配置您的数据网格:

    <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>
    

    当您点击此项目时,您的操作将被执行。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-01-26
      • 1970-01-01
      • 2011-10-10
      • 2011-10-15
      • 1970-01-01
      • 2010-12-26
      • 1970-01-01
      • 2011-08-16
      相关资源
      最近更新 更多