maricao 2011-05-03 23:18
浏览 389
已采纳

ExtJS panel中组件布局的问题


想达到的效果是,当点击change按钮后,第一行的textOrDate列,由TextField变为一个DateField组件。

 

试了很多办法,始终是加到最末尾,也就是第三行上。请问有什么好的办法吗?

 


 



 
 

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Form</title>
<link rel="stylesheet" type="text/css" href="../../resources/css/ext-all.css" />
    <script type="text/javascript" src="../../adapter/ext/ext-base.js"></script>
    <script type="text/javascript" src="../../ext-all.js"></script>
<link rel="stylesheet" type="text/css" href="forms.css" />
</head>
<body>
<script>
Ext.onReady(function(){

    Ext.QuickTips.init();

    Ext.form.Field.prototype.msgTarget = 'side';

    var fs = new Ext.FormPanel({
        frame: true,
        title:'Form',
        labelAlign: 'right',
        labelWidth: 85,
        width:500,
        waitMsgTarget: true,
        items: [
            new Ext.form.FieldSet({
                id:'fieldset',
                title: 'Contact Information',
                autoHeight: true,
                autoScroll:true,
                    items :[
                        {
                        id:'tableLayout',
                        layout:'table', //是否和布局有关?
                        layoutConfig:{columns:2},
                        items:[
                            {title:'name',width:150,height:10},
                            {title:'textOrDate',width:150,height:10},
                            new Ext.form.TextField({id:'name1', name:'name1', width:150}),
                            new Ext.form.TextField({id:'text1', name:'text1', width:150}),
                            new Ext.form.TextField({id:'name2', name:'name2', width:150}),
                            new Ext.form.TextField({id:'text2', name:'text2', width:150})
                        ]
                    }]
            })
        ]
    });

    fs.addButton('Change', function(){
                                        //希望把第一行最后一个文本框替换掉
                                        var datetype = new Ext.form.DateField({id:'date1', name:'date1', width:150});

                                        var table = Ext.getCmp('tableLayout');
                                        table.remove(Ext.getCmp('text1'));//先删除它
                                        table.insert(3,datetype);//在位置3加一个日期框,希望达到替换的效果,但是总加在最后!!!!
                                        table.doLayout();
                                        //fs.doLayout(); 
                                     }
                );

    fs.render('form-ct');
});
</script>
<div id="form-ct"></div>

</body>
</html>
  • 写回答

1条回答 默认 最新

  • cbcgkx 2011-05-04 09:22
    关注

    Ext.onReady(function() {

    Ext.QuickTips.init();
    
    Ext.form.Field.prototype.msgTarget = 'side';
    var name1 = new Ext.form.TextField({
                id : 'name1',
                name : 'name1',
                width : 150
            });
    var text1 = new Ext.form.TextField({
                id : 'text1',
                name : 'text1',
                width : 150
            });
    var name2 = new Ext.form.TextField({
                id : 'name2',
                name : 'name2',
                width : 150
            });
    var text2 = new Ext.form.TextField({
                id : 'text2',
                name : 'text2',
                width : 150
            });
    var fs = new Ext.FormPanel({
                frame : true,
                title : 'Form',
                labelAlign : 'right',
                labelWidth : 85,
                width : 500,
                waitMsgTarget : true,
                items : [new Ext.form.FieldSet({
                            id : 'fieldset',
                            title : 'Contact Information',
                            autoHeight : true,
                            autoScroll : true,
                            items : [{
                                        id : 'tableLayout',
                                        layout : 'column', // 是否和布局有关?
                                        layoutConfig : {
                                            columns : 2
                                        },
                                        xtype : 'panel',
                                        items : [{
                                                    columnWidth : .5,
                                                    items : [{
                                                                title : 'name',
                                                                width : 150,
                                                                height : 10
                                                            }, name1, name2]
                                                }, {columnWidth : .5,
                                                    id:'textordate',
                                                    items : [{
                                                                title : 'textOrDate',
                                                                width : 150,
                                                                height : 10
                                                            }, text1, text2]
                                                }
    
                                                ]
                                    }]
                        })]
            });
    
    fs.addButton('Change', function() {
                // 希望把第一行最后一个文本框替换掉
                var datetype = new Ext.form.DateField({
                            id : 'date1',
                            name : 'date1',
                            width : 150
                        });
    
                var table = Ext.getCmp("textordate");
                table.remove(text1);
    
                // 在位置3加一个日期框,希望达到替换的效果,但是总加在最后!!!!
                table.insert(1, datetype);
                table.doLayout(true, true);
                fs.doLayout(true, true);
    
            });
    
    fs.render(Ext.getBody());
    

    });

    这是修改后的代码 没问题 和你的table布局有问题 讲布局方式改成column布局 为每一个列定一个id
    单后按列操作

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿
  • ¥15 回答4f系统的像差计算
  • ¥15 java如何提取出pdf里的文字?
  • ¥100 求三轴之间相互配合画圆以及直线的算法
  • ¥100 c语言,请帮蒟蒻写一个题的范例作参考
  • ¥15 名为“Product”的列已属于此 DataTable
  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发