• Flex 解析显示.net web service的DataTable返回


    <?xml version="1.0" encoding="utf-8"?>
    <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
        
    <mx:Script>
        
    <![CDATA[
            import mx.controls.Alert;
        
    ]]>
    </mx:Script>
    <mx:WebService useProxy="false" wsdl="http://localhost/WebSite/Service.asmx?WSDL" id="ws" showBusyCursor="true">
            
    <mx:operation name="GetDataTable2">
            
    </mx:operation>
    </mx:WebService>
    <mx:Button x="153" y="20" label="Get DataSet" click="ws.GetDataTable2.send();"/>
    <mx:DataGrid left="22" right="22" top="50" bottom="386" id="dg2"
             dataProvider
    ="{ws.GetDataTable2.lastResult.diffgram.NewDataSet.Table}">
            
    <mx:columns>
                
    <mx:DataGridColumn headerText="编号" dataField="编号"/>
                
    <mx:DataGridColumn headerText="门禁控制器号" dataField="门禁控制器号"/>
                
    <mx:DataGridColumn headerText="帐号" dataField="帐号"/>
                
    <mx:DataGridColumn headerText="卡号" dataField="卡号"/>
                
    <mx:DataGridColumn headerText="交易时间" dataField="交易时间"/>
                
    <mx:DataGridColumn headerText="上传结果" dataField="上传结果"/>
                
    <mx:DataGridColumn headerText="流水类型" dataField="流水类型"/>
            
    </mx:columns>
        
    </mx:DataGrid>
    </mx:Application>

    注意此处:
    dataProvider="{ws.GetDataTable2.lastResult.diffgram.NewDataSet.Table}">

    应该指出的是在Flex中解析DataTable是非常慢的,能够明显感觉到鼠标的停顿。
    而且存在一个问题就是DataTable中只有一条数据的时候,Flex解析的结果是ProxyObject而不是ArrayCollection,需要手工处理才能绑定DataGrid。

    建议使用DataSet返回XmlDocument,不过同样存在一条数据的问题。
    .NET
    [WebMethod]
        
    public XmlDocument GetList(int id)
        {
            
    try
            {
                DataSet ds 
    = new BLL.User.GetList(id);
                XmlDocument xml 
    = new XmlDocument();
                xml.LoadXml(ds.GetXml());
                
    return xml;
            }
            
    catch (Exception ex)
            {
                XmlDocument xml 
    = new XmlDocument();
                xml.LoadXml(
    "<Error>" + ex.Message + "</Error>");
                
    return xml;
            }
        }

    Flex
    private var mydata:ArrayCollection = new ArrayCollection(); //Data
    private function getListResult(event:ResultEvent):void{  
        
    try{
            mydata.removeAll();
    //清空原数据
        if(event.result.Error != null){ //服务器端异常,见.NET上的catch
            Alert.show(event.result.Error);
        }
    else{            
            
    if(event.result.diffgram.NewDataSet != null){
                
    if(event.result.diffgram.NewDataSet.ds is ArrayCollection) //判断是否是一条数据,使用DataTable时同样存在
                mydata = event.result.diffgram.NewDataSet.ds as ArrayCollection;     
            
    else
                mydata.addItem(event.result.diffgram.NewDataSet.ds);  
    //只有一条数据         
            }  
        }
        }
        
    catch(err:Error){
            
    //处理异常
        }   
    }


  • 相关阅读:
    outlook2007邮件里的图片显示不出来
    MimeMessageHelper代码发邮件时,通过客服端登陆到邮箱,在已发送邮件里没有已经通过代码发送的邮件
    wordpress页面F12时源码多出的内容在index.php header.php找不到
    jackson-databind-2.2.3.jar,ackson-annotations-2.2.3.jar和jackson-core-2.2.3.jar下载
    系统分析师教程(张友生)高清pdf下载
    Sharepoint 恢复列表文件
    call this的范围
    吴裕雄--天生自然JAVA开发JSP-Servlet学习笔记:servlet获取表单请求参数并在客户端显示
    吴裕雄--天生自然JAVA开发JSP-Servlet学习笔记:session对象-属性可以在多个页面的跳转之间共享
    吴裕雄--天生自然JAVA开发JSP-Servlet学习笔记:response对象-增加带有中文的Cookie
  • 原文地址:https://www.cnblogs.com/mobile/p/509807.html
Copyright © 2020-2023  润新知