[as3.0]FLEX 中将OPENAMF返回的结果绑定到DataGrid中

前几天开始学习FLEX,想将从OPENAMF返回的数据绑定到DataGrid中,尝试了两种方法:

方法一:

OPENAMF代码(JAVA):

 

// 查询会员
     public  List QueryMember(String userid) {
        String sql
="";
        
if(userid.equals("")){
            sql
="select * from "+sysTableName;
        }
else{
            sql
="select * from "+sysTableName+" where suserid='"+userid+"'";
        }

        Connection connection
=null;
        Statement stmt
=null;
        ResultSet rs
=null;
        List
<Object> managerInfoList = new ArrayList<Object>();
        
try{
            Driver theDriver
=(Driver)Class.forName(driverName).newInstance();
            connection
=DriverManager.getConnection(url);
            stmt
=connection.createStatement();
            rs
=stmt.executeQuery(sql);
            
while (rs.next()){
                List
<Object> infoList = new ArrayList<Object>();
                infoList.add(rs.getObject(
"suserid"));
                infoList.add(rs.getObject(
"susername"));
                infoList.add(rs.getObject(
"ssex"));
                infoList.add(
"");
                infoList.add(rs.getObject(
"stype"));
                infoList.add(rs.getObject(
"susermoney"));
                infoList.add(rs.getObject(
"semail"));
                infoList.add(rs.getObject(
"sqq"));
                infoList.add(rs.getObject(
"surl"));
                infoList.add(rs.getObject(
"sdate"));
                infoList.add(rs.getObject(
"sphoto"));
                managerInfoList.add(infoList);
            }


        }
catch(Exception e){
            System.out.println(e);
        }
finally{
            
try{
                rs.close();
                stmt.close();
                connection.close();
            }
catch(Exception e){
            }

        }

        
return managerInfoList;
    }

 这样返回的结果是一个二维数组,这个二维数组在FLEX是不能直接绑定到DataGrid中的,要做一次转换:

 

function  onQueryAllMemberResult(result:Object): void   {
                
var memberTableName:Array=["帐号","呢称","性别","密码","类型","S币","E-MAIL","QQ","个人网站","注册时间","头像"];
                
for(var what:* in result){
                    
for(var that:* in result[what]){
                        trace(that
+"result:"+result[what][that]);
                    }

                }

                trace(
"aa:"+result[0]["性别"]);
                
var dataArray:Array=new Array();
                
for(var i:uint=0;i<result.length;i++){
                    
var temp:Dictionary=new Dictionary();
                    
for(var j:uint=0;j<result[i].length;j++){
                        temp[memberTableName[j]]
=result[i][j];
                    }

                    dataArray.push(temp);
                }

                memberManager_dg.dataProvider
=dataArray;
            }

之所以加上memberTableName这个数组是因为我的DataGrid是这样定义的:

< mx:DataGrid width = " 98% "  height = " 90% "  horizontalCenter = " -1 "  id = " memberManager_dg "  fontSize = " 12 "  textAlign = " center "   y = " 10 " >
                        
< mx:columns >
                            
< mx:DataGridColumn headerText = " 帐号 "  dataField = " 帐号 " />
                            
< mx:DataGridColumn headerText = " 呢称 "  dataField = " 呢称 "  width = " 100 " />
                            
< mx:DataGridColumn headerText = " 性别 "  dataField = " 性别 "  width = " 35 " />
                            
< mx:DataGridColumn headerText = " 密码 "  dataField = " 密码 "  width = " 35 " />
                            
< mx:DataGridColumn headerText = " 类型 "  dataField = " 类型 "  width = " 35 " />
                            
< mx:DataGridColumn headerText = " S币 "  dataField = " S币 "  width = " 100 " />
                            
< mx:DataGridColumn headerText = " E-MAIL "  dataField = " E-MAIL "  width = " 180 " />
                            
< mx:DataGridColumn headerText = " QQ "  dataField = " QQ "  width = " 100 " />
                            
< mx:DataGridColumn headerText = " 个人网站 "  dataField = " 个人网站 "  width = " 200 " />
                            
< mx:DataGridColumn headerText = " 注册时间 "  dataField = " 注册时间 "  width = " 180 " />
                            
< mx:DataGridColumn headerText = " 头像 "  dataField = " 头像 "  width = " 90 " />
                        
</ mx:columns >
                    
</ mx:DataGrid >

很显然,这样转换一次比较麻烦,如果要直接将数组绑定到DataGrid的dataProvider上,就要在JAVA来改变了,要使用哈希表来处理:

 

// 查询会员
    public List QueryMember(String userid) {
        String sql
="";
        
if(userid.equals("")){
            sql
="select * from "+sysTableName;
        }
else{
            sql
="select * from "+sysTableName+" where suserid='"+userid+"'";
        }

        Connection connection
=null;
        Statement stmt
=null;
        ResultSet rs
=null;
        List
<Object> managerInfoList = new ArrayList<Object>();
        
try{
            Driver theDriver
=(Driver)Class.forName(driverName).newInstance();
            connection
=DriverManager.getConnection(url);
            stmt
=connection.createStatement();
            rs
=stmt.executeQuery(sql);
            
while (rs.next()){
                
//List<Object> infoList = new ArrayList<Object>();
                Map<Object,Object> infoListHashMap=new HashMap<Object,Object>();
                infoListHashMap.put(
"帐号",rs.getObject("suserid"));
                infoListHashMap.put(
"呢称",rs.getObject("susername"));
                infoListHashMap.put(
"性别",rs.getObject("ssex"));
                infoListHashMap.put(
"密码","");
                infoListHashMap.put(
"类型",rs.getObject("stype"));
                infoListHashMap.put(
"S币",rs.getObject("susermoney"));
                infoListHashMap.put(
"E-MAIL",rs.getObject("semail"));
                infoListHashMap.put(
"QQ",rs.getObject("sqq"));
                infoListHashMap.put(
"个人网站",rs.getObject("surl"));
                infoListHashMap.put(
"注册时间",rs.getString("sdate"));
                infoListHashMap.put(
"头像",rs.getObject("sphoto"));
                System.out.println(infoListHashMap);
                managerInfoList.add(infoListHashMap);
            }

            
            System.out.println(managerInfoList);
            
        }
catch(Exception e){
            System.out.println(e);
        }
finally{
            
try{
                rs.close();
                stmt.close();
                connection.close();
            }
catch(Exception e){
            }

        }

        
return managerInfoList;
    }
这样就直接绑定到DataGrid的dataProvider上就可以了
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值