很抱歉这篇长篇文章。但问题很小但需要详细说明。感谢阅读和帮助:))
我使用HTTPService POST方法调用一个php文件,该文件返回xml类型的结果,如
<user>
<name>jones</name>
<age>34</age>
</user>
这个结果是在php文件查询数据库之后获得的。该数据库包含其他信息(高度,性别,教育和地址)
现在我在DataGrid下面有一个 DataGrid (有两列:NAME和AGE)和一个 Form 。我使用 dataprovider =“{userRequest.lastResult.User}”属性在DataGrid中显示了上面提到的xml数据。
我现在想要使用 itemclick = itemClickEvent(事件),以便当用户点击DataGrid的一行时,与点击的行相关的其他信息如(高度,性别,教育等)可能会出现在GUI中DataGrid下面的表单中。现在我的itemClickEvent,看起来像:
private function itemClickEvent(event:ListEvent):void
{
clickRow.text=String(event.rowIndex);
//Don't know what should i assign to following labels...
//height.text=
//gender.text=
//edu.text=
}
表格的结构:
我有没有办法从 itemClickEvent函数?访问xml数据,因为DataGrid结构标题看起来像
<mx:DataGrid id="dgUserRequest" dataProvider="{userRequest.lastResult.user}" x="28.7" y="36" width="525" height="149" itemClick="itemClickEvent(event);">
并且HTTPService标头看起来像
<mx:HTTPService id="userRequest" url="request.php" method=POST">
<mx:request xmlns="">
<getResult>send</getResult>
</mx:request>
</mx:HTTPService>
我的php文件的相关部分是:
if($_POST['getResult'] == 'send')
{
$Result = mysql_query("SELECT * FROM userInfo" );
$Return = "<userInfo>";
while ( $row = mysql_fetch_object( $Result ) )
{
$Return .= "<user><name>".$row->name."</name><age>".$row->age."</age><height>". $row->height."</height><gender>". $row->gender."</gender><education>".$row->education."</education></user>";
}
$Return .= "</userInfo>";
mysql_free_result( $Result );
print ($Return);
}
答案 0 :(得分:2)
如果您使用userRequest.lastResult.user.name
作为数据网格的dataProvider
,那么您在名称和年龄列中的dataField
是什么?
还有另一种简单的方法可以做到这一点。假设xml结构类似于:
<someRootTag>
<user>
<name>jones</name>
<age>34</age>
<height>180cm</height>
</user>
<user>
<name>john</name>
<age>4</age>
<height>100cm</height>
</user>
<!--more <user/> tags-->
</someRootTag>
您可以使用数据绑定来实现此目的。请注意resultFormat
的{{1}}已从默认HTTPService
e4x
object
您需要的唯一AS代码是从应用程序的<mx:HTTPService id="service" url="data.xml" resultFormat="e4x"/>
<mx:DataGrid id="dg" dataProvider="{service.lastResult.user}">
<mx:columns>
<mx:DataGridColumn dataField="name"/>
<mx:DataGridColumn dataField="age"/>
</mx:columns>
</mx:DataGrid>
<mx:Form>
<mx:FormItem label="Name">
<mx:TextInput text="{dg.selectedItem.name}"/>
</mx:FormItem>
<mx:FormItem label="Age">
<mx:TextInput text="{dg.selectedItem.age}"/>
</mx:FormItem>
<mx:FormItem label="Height">
<mx:TextInput text="{dg.selectedItem.height}"/>
</mx:FormItem>
</mx:Form>
调用service.send()
。