ExtJS 4.0中,如何动态改变一个rowEditor中的组件?

比如,如果一个combo选了第一项,就把同一行的另外一个组件变成datefield,如果选了第二项,就把那个组件变成textfield。

API里说是用setEditor,但参数写的是field。

我这样写的话:
[code="java"] Ext.getCmp('quote_item_grid').columns[0].setEditor(new Ext.form.field.Text({value: 3}));[/code]

报错:column.getEditor is not a function

有好多这样问的,都说用setEditor,但好像都是3.3的,4.0是不是不一样了呢?

有人说在前面加一个参数columnNumber,我试了貌似也不行,报同样的错……

7个回答

你发的那个网站,我没用明白 :oops: ,没找到怎么引入ext的样式文件。
[url]%EXT_HOME%\ext-4.0.2-gpl\ext-4.0.2\examples\grid\array-grid.js[/url]在你的ext的包下面这个路径的这个文件内容换成我这个,然后你浏览array-grid.html看看。
[code="java"]
Ext.require([
'Ext.grid.*',
'Ext.data.*',
'Ext.util.*',
'Ext.state.*'
]);

Ext.onReady(function() {
Ext.QuickTips.init();

// setup the state provider, all state information will be saved to a cookie
Ext.state.Manager.setProvider(Ext.create('Ext.state.CookieProvider'));

// sample static data for the store
var myData = [
    ['3m Co',                               71.72, 0.02,  0.03,  '9/1 12:00am'],
    ['Alcoa Inc',                           29.01, 0.42,  1.47,  '9/1 12:00am'],
    ['Altria Group Inc',                    83.81, 0.28,  0.34,  '9/1 12:00am'],
    ['American Express Company',            52.55, 0.01,  0.02,  '9/1 12:00am'],
    ['American International Group, Inc.',  64.13, 0.31,  0.49,  '9/1 12:00am'],
    ['AT&T Inc.',                           31.61, -0.48, -1.54, '9/1 12:00am'],
    ['Boeing Co.',                          75.43, 0.53,  0.71,  '9/1 12:00am'],
    ['Caterpillar Inc.',                    67.27, 0.92,  1.39,  '9/1 12:00am'],
    ['Citigroup, Inc.',                     49.37, 0.02,  0.04,  '9/1 12:00am'],
    ['E.I. du Pont de Nemours and Company', 40.48, 0.51,  1.28,  '9/1 12:00am'],
    ['Exxon Mobil Corp',                    68.1,  -0.43, -0.64, '9/1 12:00am'],
    ['General Electric Company',            34.14, -0.08, -0.23, '9/1 12:00am'],
    ['General Motors Corporation',          30.27, 1.09,  3.74,  '9/1 12:00am'],
    ['Hewlett-Packard Co.',                 36.53, -0.03, -0.08, '9/1 12:00am'],
    ['Honeywell Intl Inc',                  38.77, 0.05,  0.13,  '9/1 12:00am'],
    ['Intel Corporation',                   19.88, 0.31,  1.58,  '9/1 12:00am'],
    ['International Business Machines',     81.41, 0.44,  0.54,  '9/1 12:00am'],
    ['Johnson & Johnson',                   64.72, 0.06,  0.09,  '9/1 12:00am'],
    ['JP Morgan & Chase & Co',              45.73, 0.07,  0.15,  '9/1 12:00am'],
    ['McDonald\'s Corporation',             36.76, 0.86,  2.40,  '9/1 12:00am'],
    ['Merck & Co., Inc.',                   40.96, 0.41,  1.01,  '9/1 12:00am'],
    ['Microsoft Corporation',               25.84, 0.14,  0.54,  '9/1 12:00am'],
    ['Pfizer Inc',                          27.96, 0.4,   1.45,  '9/1 12:00am'],
    ['The Coca-Cola Company',               45.07, 0.26,  0.58,  '9/1 12:00am'],
    ['The Home Depot, Inc.',                34.64, 0.35,  1.02,  '9/1 12:00am'],
    ['The Procter & Gamble Company',        61.91, 0.01,  0.02,  '9/1 12:00am'],
    ['United Technologies Corporation',     63.26, 0.55,  0.88,  '9/1 12:00am'],
    ['Verizon Communications',              35.57, 0.39,  1.11,  '9/1 12:00am'],
    ['Wal-Mart Stores, Inc.',               45.45, 0.73,  1.63,  '9/1 12:00am']
];

/**
 * Custom function used for column renderer
 * @param {Object} val
 */
function change(val) {
    if (val > 0) {
        return '<span style="color:green;">' + val + '</span>';
    } else if (val < 0) {
        return '<span style="color:red;">' + val + '</span>';
    }
    return val;
}

/**
 * Custom function used for column renderer
 * @param {Object} val
 */
function pctChange(val) {
    if (val > 0) {
        return '<span style="color:green;">' + val + '%</span>';
    } else if (val < 0) {
        return '<span style="color:red;">' + val + '%</span>';
    }
    return val;
}

var states = Ext.create('Ext.data.Store', {
fields: ['abbr', 'name'],
data : [
{"abbr":"AL", "name":"Alabama"},
{"abbr":"AK", "name":"Alaska"}
//...
]
});

// create the data store
var store = Ext.create('Ext.data.ArrayStore', {
    fields: [
       {name: 'company'},
       {name: 'price',      type: 'float'},
       {name: 'change',     type: 'float'},
       {name: 'pctChange',  type: 'float'},
       {name: 'lastChange', type: 'date', dateFormat: 'n/j h:ia'}
    ],
    data: myData
});

// create the Grid
var grid = Ext.create('Ext.grid.Panel', {
    store: store,
    stateful: true,
    stateId: 'stateGrid',
    columns: [
        {
        text     : 'Company',
        flex     : 1,
        sortable : false,
        dataIndex: 'company',
        editor:{xtype:'combo',
                 store: states,
                            displayField: 'name',
                            valueField: 'abbr',
                            listeners:{
                                'change':function(ts){
                                        var text =this.value;
                                        if(text=='AL'){
                                            Ext.getCmp('dg').setEditor(new Ext.form.field.Text());
                                            }
                                        if(text=='AK'){
                                            Ext.getCmp('dg').setEditor(new Ext.form.field.Date());
                                            }
                                    }
                                }
            }
        },
        {
            id:'dg',
            text     : 'Price',
            width    : 75,
            sortable : true,
            dataIndex: 'price',
            editor:{xtype:'numberfield'}
        },
        {
            text     : 'Change',
            width    : 75,
            sortable : true,
            renderer : change,
            dataIndex: 'change'
        },
        {
            text     : '% Change',
            width    : 75,
            sortable : true,
            renderer : pctChange,
            dataIndex: 'pctChange'
        },
        {
            text     : 'Last Updated',
            width    : 85,
            sortable : true,
            renderer : Ext.util.Format.dateRenderer('m/d/Y'),
            dataIndex: 'lastChange'
        },
        {
            xtype: 'actioncolumn',
            width: 50,
            items: [{
                icon   : '../shared/icons/fam/delete.gif',  // Use a URL in the icon config
                tooltip: 'Sell stock',
                handler: function(grid, rowIndex, colIndex) {
                    var rec = store.getAt(rowIndex);
                    alert("Sell " + rec.get('company'));
                }
            }, {
                getClass: function(v, meta, rec) {          // Or return a class from a function
                    if (rec.get('change') < 0) {
                        this.items[1].tooltip = 'Hold stock';
                        return 'alert-col';
                    } else {
                        this.items[1].tooltip = 'Buy stock';
                        return 'buy-col';
                    }
                },
                handler: function(grid, rowIndex, colIndex) {
                    var rec = store.getAt(rowIndex);
                    alert((rec.get('change') < 0 ? "Hold " : "Buy ") + rec.get('company'));
                }
            }]
        }
    ],
     plugins: [ 
        Ext.create('Ext.grid.plugin.CellEditing', { 
            clicksToEdit: 1
        }) 
    ], 
    height: 350,
    width: 600,
    title: 'Array Grid',
    renderTo: 'grid-example',
    viewConfig: {
        stripeRows: true
    }
});

});

[/code]
这个做的是第一列的editor是个combo,选第一项的话,第二列的editor为文本,选第二项,第二列的editor为日期。

你的这个columns选错了吧,
应该是改变某一列的editor,比如这样:
[code="java"]{

            text     : 'Company',
            flex     : 1,
            sortable : false,
            dataIndex: 'company',
            editor:{xtype:'numberfield'}

        },
        {
            id:'dg',
            text     : 'Price',
            width    : 75,
            sortable : true,
            renderer : 'usMoney',
            dataIndex: 'price',
            editor:{xtype:'numberfield'}
        }[/code]

现在有2列,editor都是数字输入框。在第一个editor被编辑时触发事件,在事件中改变第二个editor的类型为文本输入框。
[code="java"]plugins: [
Ext.create('Ext.grid.plugin.CellEditing', {
clicksToEdit: 1,
listeners:{
'edit':function(e,s){
if(s.field=="company"){
alert(1);
Ext.getCmp('dg').setEditor(new Ext.form.field.Text({value: 3}));

                    }
                }
            }
        }) 
    ][/code]

具体的这个edit事件传进来的参数[color=red]e,s[/color]你可以查一下API中Ext.grid.plugin.CellEditing这个类的edit事件。就不一一列举了。
这里没有按照你的要求根据comboBox的选项来改变editor的类型,正好你自己练习下哈 :idea:

[code="java"]
text : 'Company',
flex : 1,
sortable : false,
dataIndex: 'company',
editor:{xtype:'combo',
store: states,
displayField: 'name',
valueField: 'abbr',
listeners:{
'change':function(ts){
var text =this.value;
if(text=='AL'){
Ext.getCmp('dg').setEditor(new Ext.form.field.Text({value: 3}));
Ext.getCmp('dg').removeListener('edit');
}

if(text=='AK'){
Ext.getCmp('dg').setEditor(new Ext.form.field.Date());
}
}
}
}
},
{
id:'dg',
text : 'Price',
width : 75,
sortable : true,
dataIndex: 'price',
editor:{xtype:'numberfield'}
}
[/code]
在combo的edit事件中改变列的editor。现在存在个问题,如果这个id为dg的列开始不是日期类型,那么editor改变为日期类型,我不知道该怎么给它格式化。。。

[code="java"]Ext.getCmp('dg').removeListener('edit'); [/code]
这句话不要。。。

图片怎么上传啊。。 :oops: 是要上传到网上图片库在给链接么。
[img]C:\Users\lenovo\Desktop\未命名.jpg[/img]
[img]C:\Users\lenovo\Desktop\未命名1.jpg[/img]

[code="java"]Ext.getCmp('dg').setEditor(new Ext.form.field.Text({value:4}));[/code]这个文本给个值。。

我发的图片能看到么?日历的效果出来了么?

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
extjs4.0 应用 新建项目怎么添加包

如题所示,网上也百度了一些但是总是有些功能不能用, 还有5.0兼容4.0吗?![图片说明](http://forum.csdn.net/PointForum/ui/scripts/csdn/Plugin/001/face/9.gif)急救。。。。拜谢大神![图片说明](http://forum.csdn.net/PointForum/ui/scripts/csdn/Plugin/003/onion/18.gif)

Extjs4.0 右键菜单创建问题。

我要给一个tree添加一个右键菜单。但是出现了几个问题。 Extjs4.0 树添加右键菜单 。 //创建一个上下文菜单 var rightClick = Ext.create('Ext.menu.Menu', { id : 'rightClickCont', floating : false, plain : true, items : [{ id : 'rMenu1', text : '新建对象关系/对象', handler : function() { Ext.MessageBox.alert('Woring', '功能暂未开放...') } }, { id : 'rMenu2', text : '复制', handler : function() { Ext.MessageBox.alert('Woring', '功能暂未开放...') } }, { id : 'rMenu3', text : '打开', handler : function() { Ext.MessageBox.alert('Woring', '功能暂未开放...') } }, { id : 'rMenu4', text : '删除', handler : function() { Ext.MessageBox.alert('Woring', '功能暂未开放...') } }, { id : 'rMenu4', text : '修改', handler : function() { Ext.MessageBox.alert('Woring', '功能暂未开放...') } }, { id : 'rMenu4', text : '下移', handler : function() { Ext.MessageBox.alert('Woring', '功能暂未开放...') } }] }); // 需要添加菜单的菜单树 var menutree = Ext.create('Ext.tree.Panel', { width : '100%', height : 150, store : store, rootVisible : false, autoScroll : true, items : [] }); // 创建一个树的上下文菜单函数 function rightClickFn(menutree, record, item, index, e) { e.preventDefault(); e.stopEvent(); //EXT3.0的出发显示菜单的事件是 。rightClick.show(e.getXY()); //4.0 木有这个方法。只有showBy(),和show() //还有这几个参数有点不明白。 rightClick.show(); } //给树添加监听。 menutree.addListener('itemcontextmenu', rightClickFn, this); 代码应该木有错。 主要是树的右键时间触发方法好像不对。求解释。 有熟悉可以讲解一下吗。 麻烦了。

ExtJS 4.0自带的插件itemselector的store,值如何动态改变啊?

[code="java"] items: [{ fieldLabel: 'keyword', listeners:{ change: function(textfield, value){//我的意图是,这个值变的时候,在下面列表里刷新product_store,达到筛选的目的,但store是刷新了,但itemselector左边框框里没有变过来 product_store.load({ params: { query: "37" } }); } } },{ fieldLabel: 'product list', name: 'products_ids', id: 'products_ids', xtype: 'itemselector', allowBlank: false, store: product_store, displayField: 'model', valueField: 'id', hideNavIcons: true, msgTarget: 'side' }], [/code] 程序开始的时候用autoLoad可以让itemselector左边框框里有初始值: [code="java"]var product_store = Ext.create('Ext.data.Store', { model: 'Product', storeId: 'AllProduct', autoLoad: { params: { query: "670" } } }); [/code]

extjs4.0, grid表格,修改单元格数据.

[code="java"] // 代码如下,当点击元格时,修改,然后就会发送url请求.(这个是grid自动完成的.) // 现在需要的是,不要自动发送请求,因为我修改不止一个单元格,如果每次修改一单元格都发送请求,效率太低. // 所以想实现,修改完全后,统一提交整个grid数据(点击按钮). plugins: Ext.create('Ext.grid.plugin.CellEditing', { clicksToEdit : 1, }); columns : [ Ext.create('Ext.grid.RowNumberer'), { header : '设备号', dataIndex : 'terminalId', flex : 1 }, { header : '参数', dataIndex : 'key', flex : 1 }, { header : '值', dataIndex : 'value', editor : { xtype : 'textfield' }, flex : 1 }, { header : '默认值', dataIndex : 'defaultValue', editor : { xtype : 'textfield' }, flex : 1 } ] [/code]

extjs4.0关闭窗口,在打开,就会蹦

报的错:Cannot read property 'addCls' of null, 原因好像是因为在关闭窗口后,这个面板就会被销毁,等你在打开的时候,他找不到这个面板了,所以就会蹦.但是我不知道应该这么改正,来个大神帮看看![图片说明](https://img-ask.csdn.net/upload/201709/28/1506583624_741766.png)

extjs radio 动态切换 组件

如图,如何通过选择radio本地上传,让网络地址的文本框切换成一个file,选择网络图片radio,是网络地址切换成一个文本框! 弄了两天了! [b]问题补充:[/b] 刚刚开始是觉得用removed和add,去移除再加入的方式进行处理!一直行不通 昨晚采纳了他人的建议,使用card布局,成功! atian25的思想也是对的! 做程序,要的就是解决问题!嘿嘿!

Extjs4.0如何写出这种页面

![图片说明](https://img-ask.csdn.net/upload/201710/27/1509083324_443323.png)

extjs4.0,store自动加载时,能否传参数。

[code="java"] autoLoad : true, proxy : { type : 'rest', // 通过拼接url的方式不太友好。 // url : 'api/machine/device?organization='+ewayUser.organizationId, url : 'api/machine/device', reader : { type : 'json', root : 'data' }, params : { organization : ewayUser.organizationId } } [/code]

extjs4.0在myeclipse8.6安装提示

为什么ext-4.0.7 发布包下载下来没有ext.jsb2文件,但是用myeclipse 点击 add file 的时候看不到呢

关于Extjs如何动态改变导航树?

[img]http://dl.iteye.com/upload/attachment/146115/b2098fa8-15de-34d5-99db-6b151f8c13f0.jpg[/img] 如图显示,我想通过单击头部菜单,改变左边导航树的结构,例如: 单击[System Management],左边导航树应该为[System Management]的树模型 单击[Personal Info Management],对应的则是[Personal Info Management]的树模型. 请je大侠们,给一个解决方案。谢谢。。。

extjs3.0 动态添加组件问题

``` this.basePanel = new Ext.form.FieldSet( { title :"投票信息", layout :"form", border :true, items : [ { layout :"column", columnWidth :1, border :false, defaults : { border :false }, items : [ { layout :"form", columnWidth :1, defaults : { width :"80%" }, items : [ { xtype :"hidden", name :"vote.voteId", value :this.voteId != null ? this.voteId : "" },{ xtype :"hidden", name :"vote.count", value:0 },{ anchor :"99%", xtype :"textfield", name :"vote.confTopic", fieldLabel :"投票标题", allowBlank :false, }, { columnWidth :1, anchor :"100%", layout :"form", height :160, border :false, items : [ { anchor :"98%", name :"vote.voteDesc", xtype :"htmleditor", height :150, fieldLabel :"投票描述", autoScroll :true, maxLength :4000 } ] },{ xtype :"button", iconCls :"menu-add", width:70, text :"增加投票项", scope :this, handler :this.addText } ] } ] } ] }); addText : function(){ var bp = this.basePanel; var i = bp.getCmpByName("vote.count").getValue(); var fd = new Ext.Container({ fieldLabel :"投票选项", columnWidth :1, layout :"column", border :false, items : [ { columnWidth :0.85, anchor :"99%", xtype :"textfield", fieldLabel :"投票项", name :"voteOption.voteDesc"+i, allowBlank :false, }, { width :75, defaultType :"button", border :false, items : [ { iconCls :"menu-del", text :"删除此项", scope :this, handler :function(){ this.basePanel.remove(fd,true); this.basePanel.doLayout(); } }] } ] }); i++; bp.getCmpByName("vote.count").setValue(i); bp.add(fd); console.log(bp) bp.doLayout(); console.log(bp.getCmpByName("vote.count")); //debugger; } ``` 核心代码如上所示,点击增加选项后创建新的Container,但是出现了奇怪的现象,添加到第八个后,这一块的布局出现错误![图片说明](https://img-ask.csdn.net/upload/201608/23/1471952890_238529.png) ![图片说明](https://img-ask.csdn.net/upload/201608/23/1471952900_532010.png)![图片说明](https://img-ask.csdn.net/upload/201608/23/1471952913_414849.png)

Extjs4使用reconfigure动态改变列的问题

当为用reconfigure想改变grid的列的时候,列变空白了,具体代码如下: ``` columns=column2; console.log('2',columns); console.log(store); grid.reconfigure(store,new Ext.grid.column.Column(columns)); ``` 具体图片如下![图片说明](https://img-ask.csdn.net/upload/201506/15/1434338961_666282.png) 用火狐调试显示columns是有值的,可是界面上只显示空白,特来请教大家怎么变成我想动态改变的列

Extjs中我怎么动态的改变TextFiled的emptyText

var op_menu = new Ext.menu.Menu({ id: 'op_menu', items: [ { text: '按专家姓名查找', listeners:{ click:function(t,e){ searchByEmName(); } } }, { text: '按身份证号码查找', listeners:{ click:function(t,e){ searchByEmCode(); } } } , { text: '按办公号码查找', listeners:{ click:function(t,e){ searchByEmPhone(); } } } , { text: '按工作单位查找', listeners:{ click:function(t,e){ searchByEmUnit(); } } } , { text: '按专家职务查找', listeners:{ click:function(t,e){ searchByEmDuty(); } } }, { text: '按工作年限查找', listeners:{ click:function(t,e){ searchByEmYear(); } } }] }); /* * 3.5、"查找"按钮 */ var btn_search = new Ext.Toolbar.Button( { id : "btn_search", text : '简单查询', tooltip : '使用我您能更快找到您要的信息!', menu : op_menu, iconCls : 'x-button-query' }); /* * 3.6、搜索框 */ var text_Search = new Ext.form.TextField({ id : 'text_Search', fieldLabel : '&nbsp;&nbsp;&nbsp;&nbsp;查找&nbsp;&nbsp;&nbsp;&nbsp;', // grow : true, hidden : true, inputType : 'text', fieldLabel : '查找数据', width : 200, // emptyText : '请输入', enableKeyEvents : true, listeners : { keyup : function(f,e){ var newValue = text_Search.getValue().replace(/^\s+|\s+$/g,"");//正则表达式:去掉字符串的前后空格(中间的保留) if(newValue!=oldValue){ store_Expert.reload(); } oldValue = newValue; }, focus : function (f){ text_Search.setValue(''); //oldValue=''; //store_Log.reload(); } } }); function searchByEmCode(){ keys = "emExpertCard"; Ext.getCmp("text_Search").show(); } function searchByEmName(){ keys = "emExpertName"; Ext.getCmp("text_Search").show(); } function searchByEmPhone(){ keys = "emExpertWorkPhone"; Ext.getCmp("text_Search").show(); } function searchByEmUnit(){ keys = "emExpertWorkUnit"; Ext.getCmp("text_Search").show(); function searchByEmDuty(){ keys = "emExpertDuty"; Ext.getCmp("text_Search").show(); } function searchByEmYear(){ keys = "emExpertWorkYear"; Ext.getCmp("text_Search").show(); } 我通过点击下拉菜单的选项来改变搜索框中的EmptyText,。。。。。。。。

请教一个extjs组件的问题

image = new Ext.BoxComponent({ fieldLabel : '图片', id:'photoShow', autoEl : { width : 100, height :100, tag : 'img', } }); 请问如何在这种图片组件的外层加一个类似div的东西?并且这个类似div的东西位置大小要固定。感激不尽

求教一个问题,Extjs4.x如何动态修改/添加store或者Model的Fields信息

因为我是动态列,其中一部分固定,一部分动态,需要可以执行增删改查,我要怎么在controller中设置获取Model并修改fields呢?求教了

在extjs中如何动态设置textfield的fieldLabel的值?

如果当我选择不同的下拉框,我需要textfield的fieldLabel动态变化?

关于Extjs与ckeditor整合

求大神帮帮忙~ 小弟感激不尽~ 用的是ckeditor 4.6.2 注册控件 Ext.common.CKeditor = function(config){ this.config = config; Ext.common.CKeditor.superclass.constructor.call(this, config); };   Ext.extend(Ext.common.CKeditor, Ext.form.TextArea,  {     onRender : function(ct, position){ if(!this.el){ this.defaultAutoCreate = { tag: "textarea", autocomplete: "off" }; } Ext.form.TextArea.superclass.onRender.call(this, ct, position); CKEDITOR.replace(this.id, this.config.CKConfig);     },           setValue : function(value){         Ext.form.TextArea.superclass.setValue.apply(this,[value]);         CKEDITOR.instances[this.id].setData(value);     },       getValue : function(){ CKEDITOR.instances[this.id].updateElement(); return Ext.form.TextArea.superclass.getValue.call(this);     },       getRawValue : function(){ CKEDITOR.instances[this.id].updateElement(); return Ext.form.TextArea.superclass.getRawValue.call(this);     } }); Ext.reg('ckeditor', Ext.common.CKeditor); 创建控件 var articleContent = new Ext.common.CKeditor({ fieldLabel: '文章内容', id: 'articleContent', name: 'articleContent', width: 740, height: 200 }); 但是在向编辑框中写入数据的时候总是没有效果,result.content是在后台取到的数据,现在向后台存文本是没有问题的,就是显示不出来。 Ext.getCmp('articleContent').setValue(result.content);

ExtJS panel中组件布局的问题

<p><br>想达到的效果是,当点击change按钮后,第一行的textOrDate列,由TextField变为一个DateField组件。</p> <p> </p> <p>试了很多办法,始终是加到最末尾,也就是第三行上。请问有什么好的办法吗?</p> <p> </p> <p><br><img src="http://dl.iteye.com/upload/attachment/475077/8f994dc2-4ae4-3cec-9939-543542cb739a.jpg" alt=""></p> <p> </p> <p><br><img src="http://dl.iteye.com/upload/attachment/475079/aa809570-9bd9-3f94-b7e3-33b3c1191737.jpg" alt=""><br> <br> </p> <pre name="code" class="html">&lt;html&gt; &lt;head&gt; &lt;meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"&gt; &lt;title&gt;Form&lt;/title&gt; &lt;link rel="stylesheet" type="text/css" href="../../resources/css/ext-all.css" /&gt; &lt;script type="text/javascript" src="../../adapter/ext/ext-base.js"&gt;&lt;/script&gt; &lt;script type="text/javascript" src="../../ext-all.js"&gt;&lt;/script&gt; &lt;link rel="stylesheet" type="text/css" href="forms.css" /&gt; &lt;/head&gt; &lt;body&gt; &lt;script&gt; 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'); }); &lt;/script&gt; &lt;div id="form-ct"&gt;&lt;/div&gt; &lt;/body&gt; &lt;/html&gt;</pre> <p> </p>

extjs在form里动态添加下拉框或者文本框

如题,急需!!!具体效果是根据审批步骤来doLayout的。审批步骤输入几,就有几个文本框或者下拉框,在ExtPanel中实现![图片](https://img-ask.csdn.net/upload/201603/17/1458197886_80103.jpg)![图片](https://img-ask.csdn.net/upload/201603/17/1458197892_989600.jpg)

在中国程序员是青春饭吗?

今年,我也32了 ,为了不给大家误导,咨询了猎头、圈内好友,以及年过35岁的几位老程序员……舍了老脸去揭人家伤疤……希望能给大家以帮助,记得帮我点赞哦。 目录: 你以为的人生 一次又一次的伤害 猎头界的真相 如何应对互联网行业的「中年危机」 一、你以为的人生 刚入行时,拿着傲人的工资,想着好好干,以为我们的人生是这样的: 等真到了那一天,你会发现,你的人生很可能是这样的: ...

程序员请照顾好自己,周末病魔差点一套带走我。

程序员在一个周末的时间,得了重病,差点当场去世,还好及时挽救回来了。

和黑客斗争的 6 天!

互联网公司工作,很难避免不和黑客们打交道,我呆过的两家互联网公司,几乎每月每天每分钟都有黑客在公司网站上扫描。有的是寻找 Sql 注入的缺口,有的是寻找线上服务器可能存在的漏洞,大部分都...

点沙成金:英特尔芯片制造全过程揭密

“亚马逊丛林里的蝴蝶扇动几下翅膀就可能引起两周后美国德州的一次飓风……” 这句人人皆知的话最初用来描述非线性系统中微小参数的变化所引起的系统极大变化。 而在更长的时间尺度内,我们所生活的这个世界就是这样一个异常复杂的非线性系统…… 水泥、穹顶、透视——关于时间与技艺的蝴蝶效应 公元前3000年,古埃及人将尼罗河中挖出的泥浆与纳特龙盐湖中的矿物盐混合,再掺入煅烧石灰石制成的石灰,由此得来了人...

上班一个月,后悔当初着急入职的选择了

最近有个老铁,告诉我说,上班一个月,后悔当初着急入职现在公司了。他之前在美图做手机研发,今年美图那边今年也有一波组织优化调整,他是其中一个,在协商离职后,当时捉急找工作上班,因为有房贷供着,不能没有收入来源。所以匆忙选了一家公司,实际上是一个大型外包公司,主要派遣给其他手机厂商做外包项目。**当时承诺待遇还不错,所以就立马入职去上班了。但是后面入职后,发现薪酬待遇这块并不是HR所说那样,那个HR自...

女程序员,为什么比男程序员少???

昨天看到一档综艺节目,讨论了两个话题:(1)中国学生的数学成绩,平均下来看,会比国外好?为什么?(2)男生的数学成绩,平均下来看,会比女生好?为什么?同时,我又联想到了一个技术圈经常讨...

副业收入是我做程序媛的3倍,工作外的B面人生是怎样的?

提到“程序员”,多数人脑海里首先想到的大约是:为人木讷、薪水超高、工作枯燥…… 然而,当离开工作岗位,撕去层层标签,脱下“程序员”这身外套,有的人生动又有趣,马上展现出了完全不同的A/B面人生! 不论是简单的爱好,还是正经的副业,他们都干得同样出色。偶尔,还能和程序员的特质结合,产生奇妙的“化学反应”。 @Charlotte:平日素颜示人,周末美妆博主 大家都以为程序媛也个个不修边幅,但我们也许...

如果你是老板,你会不会踢了这样的员工?

有个好朋友ZS,是技术总监,昨天问我:“有一个老下属,跟了我很多年,做事勤勤恳恳,主动性也很好。但随着公司的发展,他的进步速度,跟不上团队的步伐了,有点...

我入职阿里后,才知道原来简历这么写

私下里,有不少读者问我:“二哥,如何才能写出一份专业的技术简历呢?我总感觉自己写的简历太烂了,所以投了无数份,都石沉大海了。”说实话,我自己好多年没有写过简历了,但我认识的一个同行,他在阿里,给我说了一些他当年写简历的方法论,我感觉太牛逼了,实在是忍不住,就分享了出来,希望能够帮助到你。 01、简历的本质 作为简历的撰写者,你必须要搞清楚一点,简历的本质是什么,它就是为了来销售你的价值主张的。往深...

外包程序员的幸福生活

今天给你们讲述一个外包程序员的幸福生活。男主是Z哥,不是在外包公司上班的那种,是一名自由职业者,接外包项目自己干。接下来讲的都是真人真事。 先给大家介绍一下男主,Z哥,老程序员,是我十多年前的老同事,技术大牛,当过CTO,也创过业。因为我俩都爱好喝酒、踢球,再加上住的距离不算远,所以一直也断断续续的联系着,我对Z哥的状况也有大概了解。 Z哥几年前创业失败,后来他开始干起了外包,利用自己的技术能...

C++11:一些微小的变化(新的数据类型、template表达式内的空格、nullptr、std::nullptr_t)

本文介绍一些C++的两个新特性,它们虽然微小,但对你的编程十分重要 一、Template表达式内的空格 C++11标准之前建议在“在两个template表达式的闭符之间放一个空格”的要求已经过时了 例如: vector&lt;list&lt;int&gt; &gt;; //C++11之前 vector&lt;list&lt;int&gt;&gt;; //C++11 二、nullptr ...

优雅的替换if-else语句

场景 日常开发,if-else语句写的不少吧??当逻辑分支非常多的时候,if-else套了一层又一层,虽然业务功能倒是实现了,但是看起来是真的很不优雅,尤其是对于我这种有强迫症的程序"猿",看到这么多if-else,脑袋瓜子就嗡嗡的,总想着解锁新姿势:干掉过多的if-else!!!本文将介绍三板斧手段: 优先判断条件,条件不满足的,逻辑及时中断返回; 采用策略模式+工厂模式; 结合注解,锦...

深入剖析Springboot启动原理的底层源码,再也不怕面试官问了!

大家现在应该都对Springboot很熟悉,但是你对他的启动原理了解吗?

离职半年了,老东家又发 offer,回不回?

有小伙伴问松哥这个问题,他在上海某公司,在离职了几个月后,前公司的领导联系到他,希望他能够返聘回去,他很纠结要不要回去? 俗话说好马不吃回头草,但是这个小伙伴既然感到纠结了,我觉得至少说明了两个问题:1.曾经的公司还不错;2.现在的日子也不是很如意。否则应该就不会纠结了。 老实说,松哥之前也有过类似的经历,今天就来和小伙伴们聊聊回头草到底吃不吃。 首先一个基本观点,就是离职了也没必要和老东家弄的苦...

为什么你不想学习?只想玩?人是如何一步一步废掉的

不知道是不是只有我这样子,还是你们也有过类似的经历。 上学的时候总有很多光辉历史,学年名列前茅,或者单科目大佬,但是虽然慢慢地长大了,你开始懈怠了,开始废掉了。。。 什么?你说不知道具体的情况是怎么样的? 我来告诉你: 你常常潜意识里或者心理觉得,自己真正的生活或者奋斗还没有开始。总是幻想着自己还拥有大把时间,还有无限的可能,自己还能逆风翻盘,只不是自己还没开始罢了,自己以后肯定会变得特别厉害...

为什么程序员做外包会被瞧不起?

二哥,有个事想询问下您的意见,您觉得应届生值得去外包吗?公司虽然挺大的,中xx,但待遇感觉挺低,马上要报到,挺纠结的。

当HR压你价,说你只值7K,你该怎么回答?

当HR压你价,说你只值7K时,你可以流畅地回答,记住,是流畅,不能犹豫。 礼貌地说:“7K是吗?了解了。嗯~其实我对贵司的面试官印象很好。只不过,现在我的手头上已经有一份11K的offer。来面试,主要也是自己对贵司挺有兴趣的,所以过来看看……”(未完) 这段话主要是陪HR互诈的同时,从公司兴趣,公司职员印象上,都给予对方正面的肯定,既能提升HR的好感度,又能让谈判气氛融洽,为后面的发挥留足空间。...

面试:第十六章:Java中级开发(16k)

HashMap底层实现原理,红黑树,B+树,B树的结构原理 Spring的AOP和IOC是什么?它们常见的使用场景有哪些?Spring事务,事务的属性,传播行为,数据库隔离级别 Spring和SpringMVC,MyBatis以及SpringBoot的注解分别有哪些?SpringMVC的工作原理,SpringBoot框架的优点,MyBatis框架的优点 SpringCould组件有哪些,他们...

面试阿里p7,被按在地上摩擦,鬼知道我经历了什么?

面试阿里p7被问到的问题(当时我只知道第一个):@Conditional是做什么的?@Conditional多个条件是什么逻辑关系?条件判断在什么时候执...

面试了一个 31 岁程序员,让我有所触动,30岁以上的程序员该何去何从?

最近面试了一个31岁8年经验的程序猿,让我有点感慨,大龄程序猿该何去何从。

【阿里P6面经】二本,curd两年,疯狂复习,拿下阿里offer

二本的读者,在老东家不断学习,最后逆袭

大三实习生,字节跳动面经分享,已拿Offer

说实话,自己的算法,我一个不会,太难了吧

程序员垃圾简历长什么样?

已经连续五年参加大厂校招、社招的技术面试工作,简历看的不下于万份 这篇文章会用实例告诉你,什么是差的程序员简历! 疫情快要结束了,各个公司也都开始春招了,作为即将红遍大江南北的新晋UP主,那当然要为小伙伴们做点事(手动狗头)。 就在公众号里公开征简历,义务帮大家看,并一一点评。《启舰:春招在即,义务帮大家看看简历吧》 一石激起千层浪,三天收到两百多封简历。 花光了两个星期的所有空闲时...

《经典算法案例》01-08:如何使用质数设计扫雷(Minesweeper)游戏

我们都玩过Windows操作系统中的经典游戏扫雷(Minesweeper),如果把质数当作一颗雷,那么,表格中红色的数字哪些是雷(质数)?您能找出多少个呢?文中用列表的方式罗列了10000以内的自然数、质数(素数),6的倍数等,方便大家观察质数的分布规律及特性,以便对算法求解有指导意义。另外,判断质数是初学算法,理解算法重要性的一个非常好的案例。

《Oracle Java SE编程自学与面试指南》最佳学习路线图(2020最新版)

正确选择比瞎努力更重要!

面试官:你连SSO都不懂,就别来面试了

大厂竟然要考我SSO,卧槽。

微软为一人收购一公司?破解索尼程序、写黑客小说,看他彪悍的程序人生!...

作者 | 伍杏玲出品 | CSDN(ID:CSDNnews)格子衬衫、常掉发、双肩包、修电脑、加班多……这些似乎成了大众给程序员的固定标签。近几年流行的“跨界风”开始刷新人们对程序员的...

终于,月薪过5万了!

来看几个问题想不想月薪超过5万?想不想进入公司架构组?想不想成为项目组的负责人?想不想成为spring的高手,超越99%的对手?那么本文内容是你必须要掌握的。本文主要详解bean的生命...

我说我懂多线程,面试官立马给我发了offer

不小心拿了几个offer,有点烦

自从喜欢上了B站这12个UP主,我越来越觉得自己是个废柴了!

不怕告诉你,我自从喜欢上了这12个UP主,哔哩哔哩成为了我手机上最耗电的软件,几乎每天都会看,可是吧,看的越多,我就越觉得自己是个废柴,唉,老天不公啊,不信你看看…… 间接性踌躇满志,持续性混吃等死,都是因为你们……但是,自己的学习力在慢慢变强,这是不容忽视的,推荐给你们! 都说B站是个宝,可是有人不会挖啊,没事,今天咱挖好的送你一箩筐,首先啊,我在B站上最喜欢看这个家伙的视频了,为啥 ,咱撇...

立即提问
相关内容推荐