首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >动态数据网格Httpservice

动态数据网格Httpservice
EN

Stack Overflow用户
提问于 2010-01-04 20:32:45
回答 1查看 845关注 0票数 1

我以一定的频率从httpservice接收到这样的字符串: 1#3#234525234 where row#column#value我想要将上面的字符串实时显示到datagrid中;目前我的代码显示了整个字符串,由许多类似上面的字符串组成。我该如何解决这个问题?提前感谢

我有以下代码

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"
xmlns="*" creationComplete="srv.send()" >
<mx:Script>
<![CDATA[
    import mx.effects.effectClasses.AddItemActionInstance;
    import mx.effects.AddItemAction;
    import mx.collections.ArrayCollection;
    import mx.controls.dataGridClasses.DataGridColumn;
    import mx.events.*;
       import mx.rpc.events.ResultEvent;
       import mx.rpc.events.InvokeEvent;
       import mx.rpc.events.FaultEvent;
       import mx.rpc.AsyncRequest;
       import mx.rpc.AsyncResponder;
       import mx.rpc.AsyncToken;
       import mx.rpc.AbstractInvoker;
       import mx.controls.Alert;
       import mx.core.Container;
       import mx.core.IDataRenderer;
       import mx.controls.dataGridClasses.DataGridItemRenderer;
       import mx.controls.DataGrid;
       import flash.display.DisplayObject;
       [Bindable]
       public var i:Number;
       public var source:String;
       [Bindable]
       public var row:Array;
       public var column:Array;
       public var value:Array;
       public function cycle(source:String):void
       {
       var data:Array = source.split('#');
       i=0;
       for each(data in source)
       {
        row[i]=data[i]
        column[i]=data[i+1]
        value[i]=data[i+2]

        i=i+3
       }
       }

]]>
    </mx:Script>    
    <mx:HTTPService 
     id="srv" 
     url="http://10.15.20.75/server4flex/servlet/Datagen" 
     method="GET"
     /> 
    <mx:TextArea text="{cycle(srv.lastResult.toString())}" x="10" y="50" 
    width="699" height="59"/>
    <mx:AdvancedDataGrid dataProvider="{source}"  liveScrolling="true" id="dg" 
    x="10" y="117" width="621">
            <mx:columns>
                    <mx:AdvancedDataGridColumn dataField="{row[i]}"
               headerText="Riga"/>
                    <mx:AdvancedDataGridColumn dataField="{column[i]}"
               headerText="Colonna"/>
                    <mx:AdvancedDataGridColumn dataField="{value[i]}" 
               headerText="Valore"/>
            </mx:columns>
    </mx:AdvancedDataGrid>

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-01-04 21:33:59

首先,循环似乎是错误的,您迭代了一个字符串source,而不是一个数组。其次,您的网格应该绑定到存储在dataProvider中的对象的某些属性(数组、ArrayCollection等)。因此,数据提供程序不应该是字符串,就像在您的代码中一样。第三,dataField是存储在dataProvider中的对象字段的名称,它的值应该显示在网格单元格中。

基本上,您需要解析传入的字符串,将每行存储在一个对象中,并将所有这些对象存储在一个集合中。

因此,代码应该类似于:

代码语言:javascript
复制
[Bindable]
private var dataList:ArrayCollection;

public function cycle(source:String):void
{
var ac:ArrayCollection = new ArrayCollection();
for(var i:int = 0; i < data.length; i += 3) {
var dataObj:Object = {row: data[i], column: data[i+1], value: data[i+2]};
ac.addItem(dataObj);
}
dataList = ac;
}

<mx:AdvancedDataGrid dataProvider="{dataList}"  liveScrolling="true" id="dg" 
    x="10" y="117" width="621">
            <mx:columns>
                        <mx:AdvancedDataGridColumn dataField="row"
               headerText="Riga"/>
                        <mx:AdvancedDataGridColumn dataField="column"
               headerText="Colonna"/>
                        <mx:AdvancedDataGridColumn dataField="value" 
               headerText="Valore"/>
            </mx:columns>
    </mx:AdvancedDataGrid>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1999283

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档