Datagrid 中的链接 (flex)

发布于 2024-08-04 02:29:23 字数 473 浏览 3 评论 0原文

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

预先感

谢塞巴斯蒂安

I wanted to ask how I can put links into a datagrid. My dataProvider is the folling xml

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

sure with some more items in it. Now I want to have a datagrid that displays the name as a label and when clicking on the row the url is opened.

Can anyone help me with that thing? I know some stuff about item renderes but I don't know how I can give the url to the item renderer. Maybe with a classfactory? But how can I control which url is given to the specific item renderer?

Thanks in advance

Sebastian

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

云淡风轻 2024-08-11 02:29:23

您可以使用点击事件处理程序做您想做的事情吗?

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

Can you just do what you want using the click event handlers?

<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>
睡美人的小仙女 2024-08-11 02:29:23

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

使用项目渲染器配置数据网格,如下所示:

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

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

I think a better way to do this is to use an item renderer:

Configure your datagrid with an item renderer like this:

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

Then, create an MXML component (in this example, packaged in com.jeshurunsoftware.DgLinkButton.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>

When you click on this item, your action will be performed.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文