我省略了与前例类似的部分代码,以缩短代码段长度。差别重点在于
该方法最有价值的部分如下:
myservice.lastResult..database.* 登录后复制 |
看看这个语句。如果之前不了解E4X的作用,我可以稍加解释。myservice.lastResult变量实际上是一个XML文档。‘..’句法等价于XPath ‘//’句法。它表示“将具有此名字的任何一个标签给我”,在本例中就是“将任何一个数据库标签给我”。星号表示数据库标签的任何子标签。由于数据库标签只有一个子标签,即数据库名称的文字部分,因此这段代码就表示“将XML文档中每个数据库的名称给我”。这个功能真的很好用!
正是由于ActionScript的这种E4X扩展,Flex才能够方便地与XML数据源进行通讯。据我所知,还没有其他语言能够如此方便地查询XML文档。因此利用强大的E4X,就可以在浏览器中运行该应用程序,并得到如图2所示的结果。
|
| 图2:填充数据库名称的数据库组合框 |
单击该组合框时,将弹出下拉列表,并显示机器中的数据库列表。是的,其中有很多数据库。几乎每篇有关PHP、Flex、Rails或其他技术的文章都会用到数据库,所以我拥有大量的数据库。
创建表视图代码
主要特色功能如下:1.注册与否均可购物(同类程序中大多要求注册才能购物),方便了那些懒得注册的客户。降低门槛,自然能抓住更多潜在商机。2.除了同类程序中常见的左侧分类树外,还有顶端分类。左侧分类和顶端分类均可在后台方便的进行管理,左侧分类可任意排序。3.首页通过“新品速递”和“热销商品”两个栏目来展示商品,可自行设置在
0
创建示例Flex应用程序的最后一步就是添加表格的下拉菜单,并在数据网格中显示选中表格的数据。该例的完整代码如清单4所示。
清单4:flexmysql.mxml
<P><?xml version="1.0" encoding="utf-8"?><BR><mx:Application xmlns:mx="<FONT color=#333333 size=3>http://www.adobe.com/2006/mxml</FONT>" layout="vertical"<BR>initialize="onInitialize()"><BR><mx:Script><BR><![CDATA[<BR>import mx.collections.ArrayCollection;<BR>private static const SERVICE_BASE:String = "<FONT color=#333333 size=3>http://localhost/sql/req.php</FONT>";<BR>private var loadingDatabases:Boolean = true;<BR>private var loadingTables:Boolean = false;<BR>public function onInitialize():void<BR>{<BR>loadingDatabases = true;<BR>myservice.url = SERVICE_BASE;<BR>myservice.send( null );<BR>} public function onResult(event:Event):void<BR>{<BR>if ( loadingDatabases )<BR>{<BR>loadingDatabases = false;<BR>selectedDatabase.dataProvider = myservice.lastResult..database.*;<BR>onSelectDatabase();<BR>}<BR>else if ( loadingTables )<BR>{<BR>loadingTables = false;<BR>var tables:Array = new Array();<BR>for each ( var tablRecord:XML in myservice.lastResult..record )<BR>{<BR>for each( var tablCol:XML in tablRecord.* )<BR>tables.push( tablCol..*.toString() );<BR>}<BR>selectedTable.dataProvider = tables;<BR>onSelectTable();<BR>} else<BR>{<BR>var records:Array = new Array();<BR>for each ( var record:XML in myservice.lastResult..record )<BR>{<BR>var outRecord:Array = new Array();<BR>for each( var column:XML in record.* )<BR>outRecord[ column.name() ] = column..*.toString();<BR>records.push( outRecord );<BR>}<BR>var data:ArrayCollection = new ArrayCollection( records );<BR>dg1.dataProvider = data;<BR>}<BR>} public function onSelectDatabase():void<BR>{<BR>loadingDatabases = false;<BR>loadingTables = true;<BR>var <FONT color=#333333 size=3>url:String</FONT> = SERVICE_BASE;<BR>url += "?mode=getTables&db="+selectedDatabase.selectedLabel;<BR>myservice.url = url;<BR>myservice.send(null);<BR>} public function onSelectTable():void<BR>{<BR>var <FONT color=#333333 size=3>url:String</FONT> = SERVICE_BASE;<BR>url += "?mode=getData&db="+selectedDatabase.selectedLabel;<BR>url += "&table="+selectedTable.selectedLabel;<BR>myservice.url = url;<BR>myservice.send(null);<BR>}<BR>]]><BR></mx:Script><BR><mx:HTTPService id="myservice" result="onResult(event)" resultFormat="e4x"><BR></mx:HTTPService><BR><mx:VBox horizontalAlign="left"><BR><mx:HBox><BR><mx:Label text="Database:" /><BR><mx:ComboBox id="selectedDatabase" width="381" height="21"<BR>change="onSelectDatabase()"><BR></mx:ComboBox><BR></mx:HBox><BR><mx:HBox><BR><mx:Label text="Table:" /><BR><mx:ComboBox id="selectedTable" width="381" height="21"<BR>change="onSelectTable()"><BR></mx:ComboBox><BR></mx:HBox><BR><mx:DataGrid id="dg1" width="452"><BR></mx:DataGrid><BR></mx:VBox><BR></mx:Application></P>登录后复制 |
其中有一处重要修改,即添加了onSelectDatabase()函数的代码,以获取表格列表,然后将其输入到onResult()函数中,还添加了onSelectTable()函数,该函数可检索表格中的数据,并在onResult()处理器中设置数据网格
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号