kevin0796 2009-12-05 11:00
浏览 902
已采纳

Ext 换行问题

                success : function(response) {
                    var array = Ext.util.JSON.decode(response.responseText);
                    var limitJson=Ext.util.JSON.encode(array.cellLimitJson);
                    var limitObj = Ext.util.JSON.decode(limitJson.substring(1,
                            limitJson.length - 1));
                    var table_items=[];
                    var limitCount=0;
                    for(var i=0; i<limitObj.length; i++){
                        var tableObj=limitObj[i];
                        var cell_items=[];
                        var cell_panel=[];
                        for(var j=0; j<tableObj.items.length; j++){
                            var playObj=tableObj.items[j];
                            var playLabel= new Ext.form.Label({html:playObj.playname});
                            cell_items.push(playLabel);
                            for(var k=0; k<playObj.items.length; k++){
                                var cellObj=playObj.items[k];
                                var cellLabel= new Ext.form.Label({html:'&nbsp;&nbsp;&nbsp;&nbsp;'+cellObj.cellname});
                                var numberField=new Ext.form.NumberField({
                                    name : 'limitAmountList['+limitCount+'].maxbetamount',
                                    width :50,
                                    value :cellObj.maxBet
                                });
                                var id = new Ext.form.TextField({
                                    name : 'limitAmountList['+limitCount+'].id',
                                    value :cellObj.id,
                                    hidden :true
                                });
                                cell_items.push(cellLabel,numberField,id);
                                limitCount++;
                            }
                            var panel = new Ext.Panel({
                                layout :'column',
                                width :560,
                                height :25,
                                items:cell_items
                            });
                            cell_panel.push(panel);
                        }

                        var fs=new Ext.form.FieldSet({   
                               title :tableObj.tablename,   
                               layout : 'fit',
                               autoHeight:true,
                               autoWidth :true,
                               items :cell_panel
                            });
                        table_items.push(fs);
                    }
                    limit_form = new Ext.form.FormPanel( {
                        labelAlign :'left',
                        labelWidth :100,
                        frame :true,
                        defaults : {
                            msgTarget :'side'
                        },
                        bodyStyle :'padding:5px',
                        width :600,
                        url :'/gamemanage/member_updateMemberLimitAmount.action',
                        autoScroll :true,
                        items :table_items
                    });
                    limit_win.add(limit_form);
                    limit_win.doLayout();
                }

怎么实现图中的大中小和单中双 换行呢???

[img]http://dl.iteye.com/upload/attachment/176570/0149b2c1-7662-3417-aefb-9430714bcd34.jpg[/img]

[b]问题补充:[/b]
Map>> tableMap
= new HashMap>> ();
for(CellLimitAmountDTO table : tableList) {
//游戏玩法
List tablePlayList = celllimitDao.findTablePlay(table.getTableid());

        Map<CellLimitAmountDTO,List<CellLimitAmountDTO>> playCellMap 
            = new HashMap<CellLimitAmountDTO, List<CellLimitAmountDTO>>();

        for(CellLimitAmountDTO tablePlay : tablePlayList) {
            List<CellLimitAmountDTO> playCellList = new ArrayList<CellLimitAmountDTO>();
            for(CellLimitAmountDTO cellAmount : cellLimitList){
                if(tablePlay.getPlayid().equals(cellAmount.getPlayid())) {
                    playCellList.add(cellAmount);
                }
            }
            playCellMap.put(tablePlay, playCellList);
        }
        tableMap.put(table, playCellMap);
    }
    StringBuilder sb = new StringBuilder();
    sb.append("[");
    Iterator<CellLimitAmountDTO> tableIterator=tableMap.keySet().iterator();
    while(tableIterator.hasNext()){
        CellLimitAmountDTO table = tableIterator.next();
        sb.append("{tablename:'");
        sb.append(table.getTablename());
        sb.append("',tableid:'");
        sb.append(table.getTableid());
        sb.append("',");
        Map<CellLimitAmountDTO,List<CellLimitAmountDTO>> playCellsMap = tableMap.get(table);
        if(playCellsMap.size()>0){
            sb.append("items:[");
            Iterator<CellLimitAmountDTO> playIterator = playCellsMap.keySet().iterator();
            while(playIterator.hasNext()) {
                CellLimitAmountDTO play = playIterator.next();
                sb.append("{playid:'");
                sb.append(play.getPlayid());
                sb.append("',playname:'");
                sb.append(play.getPlayname());
                sb.append("',");
                List<CellLimitAmountDTO> cellList = playCellsMap.get(play);
                if(cellList.size()>0) {
                    sb.append("items:[");
                    for(CellLimitAmountDTO cell : cellList){
                        sb.append("{cellid:'");
                        sb.append(cell.getCellid());
                        sb.append("',maxBet:'");
                        sb.append(cell.getMaxbetamount());
                        sb.append("',cellname:'");
                        sb.append(cell.getCellname());
                        sb.append("',id:'");
                        sb.append(cell.getId());
                        sb.append("'},");
                    }
                    sb.deleteCharAt(sb.length()-1);
                    sb.append("]");
                }
                sb.append("},");
            }
            sb.deleteCharAt(sb.length()-1);
            sb.append("]");
        }
        sb.append("},");
    }
    sb.deleteCharAt(sb.length()-1);
    sb.append("]");
    System.out.println(sb.toString());
    return sb.toString();

[b]问题补充:[/b]

To yourgname:是不是第一个文本框及文本框前面的汉字作为一行
而单中双及后面的所有文本框作为第二行???

是的,就是要实现这个效果,可以修改TextField的值 然后提交

[b]问题补充:[/b]
[code="java"]
success : function(response) {
var array = Ext.util.JSON.decode(response.responseText);
var limitJson=Ext.util.JSON.encode(array.cellLimitJson);
var limitObj = Ext.util.JSON.decode(limitJson.substring(1,limitJson.length - 1));
var table_items=[];
var limitCount=0;
for(var i=0; i<limitObj.length; i++){
var tableObj=limitObj[i];
var cell_items=[];
var cell_panel=[];
for(var j=0; j<tableObj.items.length; j++){
var playObj=tableObj.items[j];
var playLabel= new Ext.form.Label({html:playObj.playname}); //显示玩法名称Label 如大中小
cell_items.push(playLabel);

                for(var k=0; k<playObj.items.length; k++){ //迭代出玩法中是items 如 大
                    var cellObj=playObj.items[k]; 
                    var cellLabel= new Ext.form.Label({html:'&nbsp;&nbsp;&nbsp;&nbsp;'+cellObj.cellname}); //显示 items 
                    var numberField=new Ext.form.NumberField({ //显示items后的 TextField
                        name : 'limitAmountList['+limitCount+'].maxbetamount', 
                        width :50, 
                        value :cellObj.maxBet 
                    }); 
                    var id = new Ext.form.TextField({ //每个items 所对应的id  便于提交修改
                        name : 'limitAmountList['+limitCount+'].id', 
                        value :cellObj.id, 
                        hidden :true 
                    }); 
                    cell_items.push(cellLabel,numberField,id); 
                    limitCount++; 
                } 
                var panel = new Ext.Panel({  //显示玩法及下items 的Panel
                    layout :'column', 
                    width :560, 
                    height :25, 
                    items:cell_items 
                }); 
                cell_panel.push(panel); 
            } 

        var fs=new Ext.form.FieldSet({   //设置FieldSet 如 北京
                   title :tableObj.tablename,   
                   layout : 'fit', 
                   autoHeight:true, 
                   autoWidth :true, 
                   items :cell_panel 
            }); 
        table_items.push(fs); 
    } 
    limit_form = new Ext.form.FormPanel( { //设置FormPanel
        labelAlign :'left', 
        labelWidth :100, 
        frame :true, 
        defaults : { 
        msgTarget :'side' 
        }, 
        bodyStyle :'padding:5px', 
        width :600, 
        url :'/gamemanage/member_updateMemberLimitAmount.action', 
        autoScroll :true, 
        items :table_items 
    }); 
    limit_win.add(limit_form); 
    limit_win.doLayout(); 

}

[/code]
[b]问题补充:[/b]
所以的组件都是根据后台请求到的数据来生成的
[b]问题补充:[/b]
[{tablename:'sdafas',tableid:'02',items:[{playid:'01',playname:'大中小',items:[{cellid:'01',maxBet:'65948.0',cellname:'大',id:'119'}]}]},{tablename:'北京',tableid:'01',items:[{playid:'01',playname:'大中小',items:[{cellid:'01',maxBet:'65948.0',cellname:'大',id:'119'}]},{playid:'02',playname:'单中双',items:[{cellid:'02',maxBet:'5000.0',cellname:'中',id:'118'},{cellid:'03',maxBet:'6515.0',cellname:'双',id:'121'},{cellid:'01',maxBet:'6597.0',cellname:'单',id:'120'}]}]}]
[b]问题补充:[/b]
[code="java"]
Ext.onReady( function() {
Ext.QuickTips.init();
// 测试数据
var sData = "[{tablename:'北京',tableid:'beijing',";
sData += "items:[";
sData += "{playid:'id1',playname:'大中小',items:[{cellid:'11',maxBet:'123',cellname:'大',id:'id2'}]},";
sData += "{playid:'id2',playname:'单中双',items:[{cellid:'22',maxBet:'234',cellname:'单',id:'id3'},";
sData += "{cellid:'33',maxBet:'345',cellname:'中',id:'id4'},";
sData += "{cellid:'44',maxBet:'456',cellname:'双',id:'id5'}";
sData += "]}";
sData += "]";
sData += "}]";

        var array = Ext.util.JSON.decode(sData);
        //var limitJson=Ext.util.JSON.encode(array.cellLimitJson); 
        //var limitObj = Ext.util.JSON.decode(limitJson.substring(1, limitJson.length - 1)); 
        var limit_win = [];
        var limit_form;
        var limitObj = array ;
        var table_items = [];
        var limitCount = 0;
        alert('00');
        for ( var i = 0; i < limitObj.length; i++) {
            var tableObj = limitObj[i];
            var cell_items = [];
            var cell_panel = [];
            for ( var j = 0; j < tableObj.items.length; j++) {
                var playObj = tableObj.items[j];
                var playLabel = new Ext.form.Label( {
                    html :playObj.playname
                });//显示玩法名称Label 如大中小 
                cell_items.push(playLabel);alert('11');
                for ( var k = 0; k < playObj.items.length; k++) {//迭代出玩法中是items 如 大  
                    var cellObj = playObj.items[k];
                    var cellLabel = new Ext.form.Label( {
                        html :'&nbsp;&nbsp;&nbsp;&nbsp;' + cellObj.cellname
                    });//显示 items  
                     alert('22');
                    var numberField = new Ext.form.NumberField( {//显示items后的 TextField  
                                name :'limitAmountList[' + limitCount + '].maxbetamount',
                                width :50,
                                value :cellObj.maxBet
                            });
                    var id = new Ext.form.TextField( {//每个items 所对应的id  便于提交修改  
                                name :'limitAmountList[' + limitCount + '].id',
                                value :cellObj.id,
                                hidden :true
                            });alert('33');
                    //var panel = new Ext.Panel({items:[cellLabel,numberField,id]}); 
                    cell_items.push(cellLabel, numberField, id);
                    limitCount++;
                }

                var panel = new Ext.Panel( { //显示玩法及下items 的Panel  
                            layout :'column',
                            width :560,
                            //height :30, 
                            items :cell_items
                        });alert('44');
                cell_panel.push(panel);
                //cell_items = [];
                //panel = [];
            }
            var fs = new Ext.form.FieldSet( { //设置FieldSet 如 北京  
                        title :tableObj.tablename, 
                        layout :'fit',
                        autoHeight :true,
                        autoWidth :true,
                        items : []
                    // items :cell_panel 
                    });
            // 把组件添加到FieldSet里 
            if (cell_panel != null && cell_panel.length > 0) {
                fs.remove(0);// 先把空项删除,如果不删除的话,在IE下看就会占了一段空白 
                for ( var l = 0; l < cell_panel.length; l++) {
                    fs.add(cell_panel[l]);
                }
            }alert('55');
            table_items.push(fs);
        }
        limit_form = new Ext.form.FormPanel( {//设置FormPanel 
                    renderTo :'form-ct',
                    labelAlign :'left',
                    labelWidth :100,
                    frame :true,
                    defaults : {
                        msgTarget :'side'
                    },
                    //bodyStyle :'padding:5px', 
                    width :600,
                    //url :'/gamemanage/member_updateMemberLimitAmount.action',
                    autoScroll :true,
                    items :table_items
                });alert('66');
        //limit_win.add(limit_form); 
        //limit_win.doLayout(); 
    });

[/code]

还是不行啊 第二次弹出 44 时 报错了 还得请哥们帮忙瞧瞧啊

[img]http://dl.iteye.com/upload/attachment/177006/659bf574-3388-31f5-884f-582b2490015e.jpg[/img]

  • 写回答

11条回答 默认 最新

  • xkuff 2009-12-06 11:38
    关注

    已经把你的代码修改好了,你只要对着红色部份修改你的代码就可以了,有些地方跟你的代码不同是因为我没有你的测试数据,只好按着你写的后台代码写了一些json测试数据:

    Ext.onReady(function(){
    Ext.QuickTips.init();
    // 测试数据
    var sData = "[{tablename:'北京',tableid:'beijing',";
    sData += "items:[";
    sData += "{playid:'id1',playname:'大中小',items:[{cellid:'11',maxBet:'123',cellname:'大',id:'id2'}]},";
    sData += "{playid:'id2',playname:'单中双',items:[{cellid:'22',maxBet:'234',cellname:'单',id:'id3'},";
    sData += "{cellid:'33',maxBet:'345',cellname:'中',id:'id4'},";
    sData += "{cellid:'44',maxBet:'456',cellname:'双',id:'id5'}";
    sData += "]}";
    sData += "]";
    sData += "}]";

    var array = Ext.util.JSON.decode(sData);
    //var limitJson=Ext.util.JSON.encode(array.cellLimitJson);
    //var limitObj = Ext.util.JSON.decode(limitJson.substring(1, limitJson.length - 1));
    var limit_win = [];
    var limit_form;
    var limitObj = [array];
    var table_items=[];
    var limitCount=0;
    for(var i=0; i<limitObj.length; i++){
    var tableObj=limitObj[i];
    var cell_items=[];
    var cell_panel=[];
    for(var j=0; j<tableObj[0].items.length; j++){
    var playObj=tableObj[0].items[j];
    var playLabel= new Ext.form.Label({html:playObj.playname});//显示玩法名称Label 如大中小
    cell_items.push(playLabel);
    for(var k=0; k<playObj.items.length; k++){//迭代出玩法中是items 如 大

    var cellObj=playObj.items[k];
    var cellLabel= new Ext.form.Label({html:'    '+cellObj.cellname});//显示 items

    var numberField=new Ext.form.NumberField({//显示items后的 TextField

    name : 'limitAmountList['+limitCount+'].maxbetamount',
    width :50,
    value :cellObj.maxBet
    });
    var id = new Ext.form.TextField({//每个items 所对应的id 便于提交修改

    name : 'limitAmountList['+limitCount+'].id',
    value :cellObj.id,
    hidden :true
    });
    //var panel = new Ext.Panel({items:[cellLabel,numberField,id]});
    cell_items.push(cellLabel,numberField,id);
    limitCount++;
    }

        var panel = new Ext.Panel({ //显示玩法及下items 的Panel  
        layout :'column',
        width :560,
        [color=red]//height :30,[/color]
        items:cell_items
        });
        cell_panel.push(panel);
        [color=red]cell_items = [];
        panel = [];[/color]
    }
    var fs=new Ext.form.FieldSet({  //设置FieldSet 如 北京  
           title :tableObj[0].tablename,  
           layout : 'fit',
           autoHeight:true,
           autoWidth :true,
           [color=red]items:[]
           // items :cell_panel[/color]
    });
    [color=red]// 把组件添加到FieldSet里
    if (cell_panel != null && cell_panel.length > 0) {
        fs.remove(0);// 先把空项删除,如果不删除的话,在IE下看就会占了一段空白
        for(var l = 0; l < cell_panel.length; l++) {
            fs.add(cell_panel[l]);
        }
    }[/color]
    table_items.push(fs);
    

    }
    limit_form = new Ext.form.FormPanel( {//设置FormPanel
    renderTo:'form-ct',
    labelAlign :'left',
    labelWidth :100,
    frame :true,
    defaults : {
    msgTarget :'side'
    },
    [color=red]//bodyStyle :'padding:5px',[/color]
    width :600,
    url :'/gamemanage/member_updateMemberLimitAmount.action',
    autoScroll :true,
    items :table_items
    });
    //limit_win.add(limit_form);
    //limit_win.doLayout();
    });

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(10条)

报告相同问题?

悬赏问题

  • ¥15 vue中我代理了iframe,iframe却走的是路由,没有显示该显示的网站,这个该如何处理
  • ¥15 操作系统相关算法中while();的含义
  • ¥15 CNVcaller安装后无法找到文件
  • ¥15 visual studio2022中文乱码无法解决
  • ¥15 关于华为5g模块mh5000-31接线问题
  • ¥15 keil L6007U报错
  • ¥15 webapi 发布到iis后无法访问
  • ¥15 初学者如何快速上手学习stm32?
  • ¥15 如何自动更换布娃娃图片上的衣服
  • ¥15 心理学eprime编程