`
mylxiaoyi
  • 浏览: 328372 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

获取并显示数据

阅读更多
获取并显示数据

为了向我们的程序提供数据,Adobe Flex包含特别为与HTTP服务器,网络服务或者是远程对象服务(Java对象)进行交互的而设计的组件。这些组件被称之为远程过程调用(RPC)服务组件。
与Adobe ColdFusion,PHP或者是相似的服务器技术创建的程序不同,Flex程序并能直接与一个数据库进行交互。他们使用服务与数据进行交互。例如,我们可以在Flex文件中插入一个HTTP服务来与ColdFusion文件进行交互,从而从一个MySQL数据取得数据,转换成为XML,然后发送到我们的Flex程序。
在这一节,我们将会创建一个简单的获取最近留言并且允许用户读取留言的最前几条的BlogReader程序。我们可以使用一个名为HTTPService的RPC服务组件从一个RSS获取数据,然后我们将数据绑定到一个Label,DataGrid,TextArea和LinkButton控件。

设置我们的工程
在我们开始这一节之前,我们完成下面的任务:
如果我们没有创建工程,创建Lessons工程。
确保打开了自动构建选项。

回顾到远程数据源的访问
出于安全的原因,运行在客户端计算机上的Flash播放中的程序只有在满足下面的条件时才可以访问远程数据源:
1 我们程序所编译的SWF文件与远程数据源在同一个域。
2 我们使用代理并且我们的SWF文件与代理在同一个服务器上。
Adobe Flex数据服务为Flex程序提供了一个完整的代理管理系统。我们也可以使用Web脚本语言,例如ColdFusion,JSP,PHP或者ASP创建一个简单的代理服务。
3 在远程数据源的服务器上安装一个crossdomain.xml文件。crossdomain.xml文件允许其他域的SWF文件
访问数据源。
在这一节所使用的数据源位于一个配置了crossdomain.xml文件的域。所以,Flash播放器可以访问远程数据。

插入与定位Blog Reader控件
在这一节,我们创建我们的Blog-Reader程序的布局。
1 在浏览视图中选择Lessons工程,选择File>New>MXML Application创建一个名为BlogReader.mxml的程序文件。
2 通过在浏览视图中右击这个文件并从弹了菜单中选择Set As Default Appliction将设置为默认编译的程序文件。
3 在MXML编辑器的设计模式中,从内容视图的布局类中拖放一个面板容器,并且将其设置为如下面的属性:
Title: Blog Reader
Width: 475
Height: 400
X: 10
Y: 10
4 在设计模式中,通过在组件视图中拖放添加如下的控件:
DataGrid
TextArea
LinkButton
5 使用鼠标将这些控件布局为垂直,左对齐的列。
6 选择DataGrid控件设置为如下的属性:
Id: dgPosts
X: 20
Y: 20
7 选择TextArea控件设置为如下的属性:
X: 20
Y: 175
Width: 400
8 选择LinkButton控件设置如下的属性:
Label: Read Full Post
X: 20
Y: 225
布局效果如下图所示:

9 切换到代码模式。BlogReader.mxml应包含下面的MXML代码:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
    <mx:Panel x="10" y="10" width="475" height="400" layout="absolute" title="Blog Reader">
        <mx:DataGrid id="dgPosts" x="20" y="20" width="400">
            <mx:columns>
                <mx:DataGridColumn headerText="Column 1" dataField="col1"/>
                <mx:DataGridColumn headerText="Column 2" dataField="col2"/>
                <mx:DataGridColumn headerText="Column 3" dataField="col3"/>
            </mx:columns>
        </mx:DataGrid>
        <mx:TextArea x="20" y="175" width="400"/>
        <mx:LinkButton x="20" y="225" label="Read Full Post"/>
    </mx:Panel>
</mx:Application>
10 保存文件,待到构建完成时运行程序。
程序运行效果如下图所示:

下一步就是获取最近的Blog留言信息。我们可以使用名为HTTPService的RPC服务组件来完成这个任务。

插入HTTPService组件
对于这一节的BlogReader程序,我们将会从Matt Chotion的Bloghttp://www.adobe.com/go/mchotinblog获取留言信息。Matt是Flex开发团队的产品经理,并且在他的Blog写有关Flex的内容。
我们可以使用HTTPService组件来访问Blog的XML并且获取最近的留言信息。这个组件可以让我们发送一个GET或是POST请求,然后获取响应中的数据。
1 在代码模式中,在<mx:Application>标签之后加入下面的<mx:HTTPService>标签。
<mx:HTTPService
    id="feedRequest"
    url="http://weblogs.macromedia.com/mchotin/index.xml"
    useProxy="false"/>
url属性指定了请求文件的位置,在这种情况下是Matt Chotion Blog的RSS 2.0。在编写本指南时,这个URL是可用的,但是我们应检测是否发生了改变。我们可以使用在http://www.adobe.com/go/mchotinblog列出的最新的RSS2.0的地址。
useProxy指明了我们不希望使用服务器上的代理。Matt的Blog位于一个配置了crossdomain.xml的域,所以Flash播放器可以访问这个服务器上的远程数据源,包括RSS。
下一步就是要让程序向指定的URL发送一个请求。我们决定在程序启动时自动发送一个请求。如下面所示。
2 在<mx:Application>标签中添加下面的creationComplete属性:
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="feedRequest.send()">
当我们的程序启动完成时,HTTPService组件的send()方法就会被调用。这个方法向指定的URL发送了一个GET或是POST语法,并且会返回一个HTTP响应。在这种情况下,RSS返回XML数据。
下一步,我们希望检测程序是否成功的取得了RSS数据。我们可以通过将数据绑定到Label控件来做到,如下所示。
3 在<mx:Panel>标签中,将title属性替换为下面的绑定表达式:
title="{feedRequest.lastResult.rss.channel.title}"
这个表达式将title域绑定到Panel控件。这个表达式反映了XML的结构。当XML返回到HTTPService组件时,这个组件将其解析成名为lastResult的ActionScript对象。lastResult的结构是XML文档结构的镜像。为了检测XML的结构,下载RSS的XML文件(http://www.adobe.com/go/flex_blogfeed)并且在浏览器中打开。
XML的通常结构如下所示:

<rss>
    <channel>
        <title>
        other child nodes of <channel>
        <item>
            <title>
            other child nodes of <item>
        </item>
        ...
一些节点具有包含数据的孩子节节点,包括channel节点的"title"孩子节点。HTTPService组件的lastResult对象反映了这种结构:
feedRequest.lastResult.rss.channel.title
我们代码应是如下的样子:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
    creationComplete="feedRequest.send()" layout="absolute">
    <mx:HTTPService
        id="feedRequest"
        url="http://weblogs.macromedia.com/mchotin/index.xml"
        useProxy="false" />
    <mx:Panel x="10" y="10" width="475" height="400" title="{feedRequest.lastResult.rss.channel.title}">
        <mx:DataGrid id="dgPosts" x="20" y="20" width="400">
            <mx:columns>
                <mx:DataGridColumn headerText="Column 1" dataField="col1"/>
                <mx:DataGridColumn headerText="Column 2" dataField="col2"/>
                <mx:DataGridColumn headerText="Column 3" dataField="col3"/>
            </mx:columns>
        </mx:DataGrid>
        <mx:TextArea x="20" y="175" width="400"/>
        <mx:LinkButton x="20" y="225" label="Read Full Post"/>
    </mx:Panel>
   
</mx:Application>
4 保存这个文件,待到构建完成后运行这个程序。
这样就会打开浏览器来运行这个程序。Blog的标题,Matt Chotin,就会作为Panel控件的标题出现,这样就表这个程序成功的从RSS取得了相应的数据信息。

处理DataGrid控件
在我们的程序中,我们希望DataGrid控件显示最近留言的标题以及发表日期。
1 在代码模式中,在<mx:DataGrid>标签中添加下面的dataProvider属性:
<mx:DataGrid x="20" y="20" id="dgPosts" width="400" dataProvider="{feedRequest.lastResult.rss.channel.item}">
我们希望名为item的XML节点向DataGrid控件提供数据。这个节点在XML中是重复的,所以在DataGrid也是重复的。
2 在第一个<mx:DataGridColumn>标签中,添加下面的headerText和dataField属性值:
<mx:DataGridColumn headerText="Posts" dataField="title"/>
我们希望在DataGrid控件的第一列显示留言的标题。我们通过指明XML中包含title数据的域来做到,并且将这个域作为dataField属性值。在dataProvider属性指定的XML节点中,名为title的子节点包含我们希望的信息。
3 在第二个<mx:DataGridColumn>标签中,输入下面的headerText,dataField以及width属性值:
<mx:DataGridColumn headerText="Date" dataField="pubDate" width="150"/>
我们希望在DataGrid的第二列显示留言发表的日期。在这种情况下,包含数据的域名为pubDate。
4 删除第三个<mx:DataGridColumn>标签,因为我们并不需要第三列。
最终的程序看起来应是如下的样子:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
    creationComplete="feedRequest.send()" layout="absolute">
    <mx:HTTPService
        id="feedRequest"
        url="http://weblogs.macromedia.com/mchotin/index.xml"
        useProxy="false"/>
    <mx:Panel x="10" y="10" width="475" height="400" title="{feedRequest.lastResult.rss.channel.title}">
        <mx:DataGrid id="dgPosts" x="20" y="20" width="400" dataProvider="{feedRequest.lastResult.rss.channel.item}">
            <mx:columns>
                <mx:DataGridColumn headerText="Posts" dataField="title"/>
                <mx:DataGridColumn headerText="Date" dataField="pubDate" width="150"/>
            </mx:columns>
        </mx:DataGrid>
        <mx:TextArea x="20" y="175" width="400"/>
        <mx:LinkButton x="20" y="225" label="Read Full Post"/>
    </mx:Panel>
   
</mx:Application>
5 保存文件,待到程序编译完成时,运行这个程序。
程序的运行效果如下:
Blog标题以及日期应出现在DataGrid控件中,表明程序成功的从RSS取得了数据信息。

显示选择的列
当用户在DataGrid控件中选择了一条留言,我们希望程序在TextArea控件中显示这条留言的最前几行。在XML的item节点中,这些信息包含在名为description的域中。
1 在源码模式下,在<mx:TextArea>标签中输入下面的htmlText属性:
<mx:TextArea x="20" y="175" width="400"
    htmlText="{dgPosts.selectedItem.description}" />
对于DataGrid组件中的第一个选择的item,description域的值将会作为htmlText属性的值。htmlText属性可以让我们显示HTML格式的文本。
2 保存文件,待到程序编译完成时,运行程序。
点击DataGrid控件中的条目时,每条留言的最前几行就会出现在TextArea控件中。
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
    creationComplete="feedRequest.send()" layout="absolute">
    <mx:HTTPService
        id="feedRequest"
        url="http://weblogs.macromedia.com/mchotin/index.xml"
        useProxy="false" />
    <mx:Panel x="10" y="10" width="475" height="400" title="{feedRequest.lastResult.rss.channel.title}">
        <mx:DataGrid id="dgPosts" x="20" y="20" width="400" dataProvider="{feedRequest.lastResult.rss.channel.item}">
            <mx:columns>
                <mx:DataGridColumn headerText="Posts" dataField="title"/>
                <mx:DataGridColumn headerText="Date" dataField="pubDate" width="150" />
            </mx:columns>
        </mx:DataGrid>
        <mx:LinkButton x="20" y="225" label="Read Full Post" click="navigateToURL(new URLRequest(dgPosts.selectedItem.link));"/>
   
        <mx:TextArea x="20" y="175" width="400"/>
       
    </mx:Panel>
   
</mx:Application>
DataGrid控件中选定条目的link域的值,dgPosts.selectedItem.link,指定为navigateToURL()方法的参数,当用点击时就会调用这个方法。navigateToURL()方法在一个新的浏览器窗口中装入一个文档。
2 保存文件,待到Flex Builder完成程序编译时,运行这个程序。
点击DataGrid控件中的一个条目并且点击Read Full Post链接时,就会打开一个新的浏览器窗口并且显示全部的留言信息。
在这一部分,我们使用名为HTTPService的RPC服务组件来从RSS获取信息,然后我们将这些信息绑定到Labe,DataGrid,TextArea以及LinkButton控件。
 
分享到:
评论

相关推荐

    html前端动态获取后端数据显示到表格,实现分页显示

    html前端获取后端js的数据,实现到html表格,并且实现表格分页显示,分页显示原理是要显示那一页数据就从后端获取需要显示页的数据,不会一次性获取全部数据,减小流前端的压力。后端使用js+express,读取csv文件...

    从网络获取XML数据并且显示出来

    本话题主要探讨如何从网络获取XML数据并将其有效地呈现给用户,我们将会深入Android和Web应用两个方面来阐述这一过程。 首先,XML(Extensible Markup Language)是一种结构化数据格式,广泛用于数据交换,因为它...

    C# 主线程显示数据,子线程获取数据

    本主题聚焦于如何利用“异步委托”在主线程中显示数据,同时在子线程中获取这些数据,以保证界面的响应性和程序的流畅性。 异步编程是解决UI线程阻塞问题的有效手段,它允许我们执行长时间运行的任务而不会冻结用户...

    微信小程序获取OneNet数据显示温湿度

    微信小程序获取OneNet数据显示温湿度

    Android Studio如何获取SQLite数据并显示到ListView上

    本教程将指导你如何从SQLite数据库中获取数据并将其动态显示到ListView上。SQLite是一个轻量级的嵌入式数据库,适用于移动设备,它能高效地存储和检索数据。 首先,你需要创建一个SQLite数据库。在Android Studio中...

    VC++获取网上股市数据并实时图表显示的源代码

    该源代码项目是一个基于VC++的股票数据获取与实时图表显示的应用程序,使用了Visual Studio 2010进行开发。这个程序的核心功能是通过新浪网提供的股市接口,获取最新的股票市场数据,包括6个主要的大盘指数和50个...

    HTML+AJAX(手写ajax)显示数据库数据

    通过这种方式,我们可以在不刷新整个页面的情况下,实时地从数据库获取并显示数据,提高了用户交互性。 总的来说,HTML+AJAX的组合为网页开发提供了强大的功能。它允许开发者构建更富交互性的应用,同时减少了不必...

    Java天气应用程序 - 使用天气API获取实时天气数据并显示给用户

    例如,可以使用`JFrame`作为主窗口,`JLabel`显示标题,`JTextField`供用户输入城市名,以及`JButton`触发获取天气数据的请求。 - 当用户点击按钮时,调用`getUserInput`方法获取输入,然后构建API请求URL,最后...

    腾讯股票实时数据接口---五档行情---VC++ 6.0获取并显示沪深股市实时行情数据---.rar

    在本项目中,我们主要探讨如何使用VC++ 6.0这一经典的编程环境来实现一个功能,即通过腾讯股票实时数据接口获取并显示沪深股市的五档行情数据。五档行情通常包括买一、买二、买三、买四、买五以及卖一、卖二、卖三、...

    HttpClient 获取并显示数据

    1、 HttpClientModule导入 app.module.ts ... @NgModule({ imports: [ BrowserModule, HttpClientModule, ], declarations: [ ], ...目的:获取数据并与外部 API 和资源进行交互。 cart.service.ts imp

    JS获取Excel数据并显示到页面(IE)

    在JavaScript中获取Excel数据并将其显示到网页上,特别是在IE浏览器环境下,涉及到多个技术要点。以下将详细解析这个过程,并提供一些关键知识点。 首先,我们需要理解JavaScript与Excel数据交互的基本原理。由于...

    guns下拉自定义获取

    这意味着,我们不再需要在页面加载时一次性加载所有下拉选项,而是根据用户的操作或特定条件,按需获取并显示数据。这种策略对于大数据量的下拉列表尤其有利,避免了初始加载时的性能压力。 实现下拉自定义获取的...

    页面获取grid中的数据

    通过分析这些API请求,我们可以获取到Grid显示的所有数据。 2. **DOM遍历**:如果Grid的数据是静态加载或者在客户端渲染,我们可以直接解析HTML DOM(文档对象模型)。使用JavaScript库,如jQuery,可以方便地找到...

    基于 ESP8266 的网络数据获取与显示系统:通过服务端获取网络数据、并通过 MQTT 发送到设备端显示,客户端进行设备配置

    【作品名称】:基于 ESP8266 的网络数据获取与显示系统:通过服务端获取网络数据、并通过 MQTT 发送到设备端显示,客户端进行设备配置。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设...

    实例03获取JSON数据,显示计步器的个人信息.rar

    在Android开发中,获取JSON数据并将其展示在应用中是一项常见的任务,特别是在构建与服务器进行交互的移动应用时。这个实例“实例03获取JSON数据,显示计步器的个人信息.rar”显然涉及到从服务器获取JSON格式的数据...

    ESP32获取图像数据通过TFT-1.44寸屏显示

    在本文中,我们将深入探讨如何在ESP32微控制器上使用MicroPython实现图像数据的获取与显示,特别是在1.44英寸TFT屏幕上。ESP32是一款强大的、集成Wi-Fi和蓝牙功能的单片机,非常适合物联网(IoT)应用和嵌入式系统设计...

    Django读取Mysql数据并显示在前端的实例

    在本实例中,我们将探讨如何使用Django框架从MySQL数据库中读取数据并将其呈现到前端页面上。Django是一个强大的Python Web开发框架,而MySQL则是一种广泛使用的关系型数据库管理系统。结合两者,我们可以构建动态的...

    获取GPS+MPU信息

    在本文中,我们将深入探讨如何通过使用特定的软件来获取并显示GPS与MPU6050传感器的数据,这些信息通常被应用于各种嵌入式系统...同时,调试过程中,确保所有硬件连接正确,软件配置无误,是成功获取并显示数据的关键。

    五档行情---VC++ 6.0获取并显示沪深股市实时行情数据.rar

    在本文中,我们将深入探讨如何使用VC++ 6.0编程环境来开发一款能够获取并显示沪深股市实时行情数据的应用程序。"五档行情"通常指的是股票市场中的买一、买二、买三、卖一、卖二、卖三六个价位,这六档价格反映了市场...

    xamarin.android listview控件通过web api获取并展示数据

    在Xamarin.Android开发中,ListView控件是一种常用的数据展示组件,它可以用来显示一系列可滚动的项目,非常适合于数据显示。本教程将深入探讨如何利用ListView结合Web API来动态获取并展示数据。 首先,我们需要...

Global site tag (gtag.js) - Google Analytics