我想使用flex显示数据网格中来自数据库的值。这是我的代码。我正在使用webservice。我有来自application1_initializeHandler()
方法的数据库值。如何将这些值提取到onResult()方法并执行数据绑定?我想要onResult()
函数和数据绑定的代码。请帮忙..
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx" initialize="application1_initializeHandler(event)">
<fx:Script>
<![CDATA[
import mx.events.FlexEvent;
import mx.rpc.AsyncResponder;
import mx.rpc.AsyncToken;
import mx.rpc.events.FaultEvent;
import mx.rpc.events.ResultEvent;
protected function application1_initializeHandler(event:FlexEvent):void
{
AreasOfWestBengal.loadWSDL();
var s:String = "SELECT * FROM [CSFTestNew].[dbo].[AreasOfWestBengal]";
var t:AsyncToken = AreasOfWestBengal.GetRec("[AreasOfWestBengal]", s, "1", "SQLExpress");
t.addResponder(new AsyncResponder(onResult, onFault, t));
}
protected function onResult(event:ResultEvent, token:Object=null):void
{
}
protected function onFault(event:FaultEvent, token:Object=null):void
{
trace(event.fault.toString());
}
]]>
</fx:Script>
<fx:Declarations>
<s:WebService id="AreasOfWestBengal" wsdl="https://www.geoviewer8.com/gv8webservices/CSF_NewGVOConfig/GVOConfig.asmx?wsdl"/>
</fx:Declarations>
<mx:DataGrid x="197" y="83" width="348" height="216">
<mx:columns>
<mx:DataGridColumn headerText="Areas" dataField="Areas"/>
<mx:DataGridColumn headerText="SubAreas" dataField="SubAreas"/>
</mx:columns>
</mx:DataGrid>
</s:Application>
由于
答案 0 :(得分:0)
一种解决方案是为 mx:DataGrid 设置数据提供程序(如 ArrayCollection )作为其 dataProvider 属性 - 请参阅Passing Data to a DataGrid Control section here举个例子。
现在,当您的 onResult 函数执行时,您可能希望首先清除数据提供程序(从 DataGrid 中删除所有行) - 如果数据源是 ArrayCollection ,您将使用 removeAll 方法。现在从ResultEvent参数获取实际的Web服务调用结果(在您的代码中,它是event.result
)。您需要知道此结果值的数据类型(它应该是某种列表数据结构),以便您可以弄清楚如何将其元素作为网格行添加到 DataGrid的数据提供程序中。例如,如果您的数据提供者是ArrayCollection,则可以使用其 addItem 方法将event.result
的每个元素添加到此 ArrayCollection 中。如果event.result
实现了 IList 接口,则可以使用 ArrayCollection 的 addAll 方法将所有行添加到数据提供程序中。确保作为行添加到数据提供程序中的对象符合 mx:DataGridColumns - 即这些对象需要具有区域和 SubAreas 属性,以便它们的值将显示在这些列中。
这是web service-specific DataGrid example from Adobe。
protected function onResult(event:ResultEvent, token:Object=null):void
{
// Assuming the grid's data provider is an ArrayCollection
// (1) clear existing table rows
dataProvider.removeAll();
// (2) add the new rows from event.result into dataProvider
// using dataProvider.addAll(event.result) if possible or one at a time
// using dataProvider.addItem(...)
dataProvider.addAll(event.result);
// An alternative to the above would be to replace the dataProvider
// of your grid with event.result if it is a compatible data type
// AreasOfWestBengal.dataProvider = event.result;
}