【发布时间】:2018-04-15 16:31:35
【问题描述】:
目前,我正在使用 XML 文件为我的网格填充数据。
我的 XML 文件是这样的
<property>
<category>Email</category>
<name>To-address</name>
<value>abc@xyz.com</value>
</property>
<property>
<category>Email</category>
<name>From-address</name>
<value>abc@xyz.com</value>
</property>
<property>
<category>Email</category>
<name>Email-body</name>
<value>My Body</value>
</property>
<property>
<category>Email</category>
<name>Password</name>
<value>1234</value>
</property>
我正在像这样填充我的网格:
{
xtype: 'grid',
columns: [{
text: 'Name',
width: 100,
dataIndex: 'name'
}, {
text: 'Value',
dataIndex: 'value',
flex: 1,
getEditor: function(record) {
if (record.get('name') === 'password') {
return Ext.create('Ext.grid.CellEditor', {
field: Ext.create('Ext.form.field.Text', {
inputType: 'password'
})
})
else if (record.get('name') === 'Content') {
return Ext.create('Ext.grid.column.Action', {
width: 50,
items: [{
iconCls: 'x-fa fa-cog',
tooltip: 'Edit',
handler: function(grid, rowIndex, colIndex) {
alert('Hello World');
}
}]
});
} else {
return Ext.create('Ext.grid.CellEditor', {
field: Ext.create('Ext.form.field.Text', {})
})
},
renderer: function(value, meta, rec) {
if (record.get('name') === 'password') {
value = '***';
}
return value;
}
}
}
],
selType: 'cellmodel',
plugins: {
ptype: 'cellediting',
}
}
}
我想在内容行中添加一个按钮作为值,这将弹出一个窗口,以便在单击时向用户添加电子邮件正文。
这是我尝试过的。它能够添加一个处理程序正常工作的按钮,但它隐藏了其他网格值列数据
if (record.get('name') === 'Content') {
var id = Ext.id();
Ext.defer(function() {
Ext.widget('button', {
renderTo: id,
text: 'Edit',
width: 100,
handler: function(record) {
alert("Hello world");
}
});
}, 50);
return Ext.String.format('<div id="{0}"></div>', id);
}
作为初步步骤,我想选中我正在添加内容的操作列的警告框。但它没有出现在行中。
我在这里缺少什么来向网格行添加一个按钮?
【问题讨论】:
-
你正在用你的
grid方法解决form问题。如果我是你,我会考虑将 XML 制作成一条记录而不是四条记录,并使用带有字段的表单面板。现在至少会容易一点,从长远来看肯定会容易得多。 -
@Alexander 是的,我同意你的看法。正如我已经开始使用它一样,想知道我在这里缺少什么。无论如何感谢您的建议:)
标签: javascript extjs