如何为Extjs的form表单组件里面的每一个字段增加一个编辑按钮

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何为Extjs的form表单组件里面的每一个字段增加一个编辑按钮相关的知识,希望对你有一定的参考价值。

这样做的目的是为了让有编辑需要的字段增加一个字段的单独编辑的功能,也就是说:
一次只允许用户编辑表单中的一个字段.不允许同时编辑两个字段

/**

* 自定义一个带编辑控制按钮的控件

*/

Ext.define('Ext.form.ControlEditField',

extend : 'Ext.form.FieldContainer',

alias : 'widget.controleditfield',

groupFieldType : 'textfield',

groupFieldConfig : null,

layout : 'hbox',

width : 250,

initComponent : function()

var me = this;

me.items = [];

me.width = me.width + 50;

if (me.groupFieldConfig)

me.groupFieldType = me.groupFieldConfig.xtype

|| me.groupFieldType;

me.items = [me.groupFieldConfig,

xtype : 'button',

text : me.groupFieldConfig.readOnly ? '当前关' : '当前开',

width : 50,

handler : function(btn)

var form = btn.up()

var field = form.down(form.groupFieldType);

var readonly = field.readOnly;

btn.setText(!readonly ? '当前关' : '当前开');

field.setReadOnly(!readonly);


];

me.initLabelable();

me.initFieldAncestor();


me.callParent();

,

setValue : function(value)

var me = this;

var field = me.down(me.groupFieldType);

if (field)

field.setValue(value);

,

getValue : function()

var me = this;

var field = me.down(me.groupFieldType);

if (field)

return field.getValue();

);

Ext.create('Ext.form.Panel',

title : 'FieldContainer Example',

width : 550,

bodyPadding : 10,

items : [

xtype : 'controleditfield',

fieldLabel : 'Last Three Jobs',

labelWidth : 100,

width : 300,

groupFieldConfig :

xtype : 'combo',

store : [['a', 'b'], ['c', 'd']]

,

xtype : 'controleditfield',

fieldLabel : 'Last Three Jobs',

labelWidth : 100,

width : 300,

id : 'test',

groupFieldConfig :

xtype : 'textfield'

,

xtype : 'controleditfield',

fieldLabel : 'Last Three Jobs',

labelWidth : 100,

width : 300,

groupFieldConfig :

xtype : 'datefield',

format : 'Y-m-d H:i:s'

],

renderTo : Ext.getBody()

);

Ext.defer(function()

Ext.getCmp('test').setValue("我我我我");

, 5000);

控制函数自己写吧

来自:求助得到的回答
参考技术A 可以用Ext.definde自定义一个新组件,然后自己加上button。

也可以直接在后面加上么,无非改下布局而已。button共用同一个事件就可以了,用name或cls去query。

以上是关于如何为Extjs的form表单组件里面的每一个字段增加一个编辑按钮的主要内容,如果未能解决你的问题,请参考以下文章

如何为嵌套在 ExtJs 表单内的网格分组列标题

ExtJS中怎样获取Form表单中的每一项的值

ExtJS - 动态添加复选框到表单

如何为Servlet类配置url以及form表单动作元素的写法。

Angular2 Reactive forms - 使用下拉菜单设置表单字段的默认值

如何为表单的 <select> 关系应用 if 语句