EXTJS4.2 控件之Grid 根据数据源某列数据不同绑定不同的控件setEditor
Grid 根据数据源某列数据不同绑定不同的控件,例如:文本框和下拉框
主要代码写在grid的 plugins: [rowEditing],下面这是定义的rowEditing对象,这里面的要定义成 Ext.grid.plugin.CellEditing而不是Ext.grid.plugin.RowEditing
Ext.getCmp('pvn').setEditor(form组件);这是给grid的列绑定组件,
pvn是在列中定义的id!
如下:
var rowEditing = Ext.create('Ext.grid.plugin.CellEditing', {// RowEditing
clicksToEdit: 2,
listeners: {
'edit': function (e, s) {
var selectedData = grid_DynaProperty.getSelectionModel().getSelection()[0].data;
if (selectedData.ValueMethod == "1") {
Ext.getCmp('pvn').setEditor(
new Ext.form.field.ComboBox({
name: 'PropertyValueName',
typeAhead: true,
store: comboData_DynaPropertyValue,
valueField: "PropertyValueName",
displayField: "PropertyValueName",
queryMode: 'remote', //local remote
triggerAction: 'all',
lazyRender: true,
repeatTriggerClick: true,
listeners: {
"expand": function (combo, store, index) {
var selectedData = grid_DynaProperty.getSelectionModel().getSelection()[0].data;
comboData_DynaPropertyValue.load({
params: {
PropertyId: selectedData.PropId,
start: startDynaProperty,
limit: limitDynaProperty
}
});
}
}
}));
} else {
Ext.getCmp('pvn').setEditor(new Ext.form.field.Text());
}
}
}
});
如图:1.绑定下拉框
2.绑定文本框
代码如下:
var rowEditing = Ext.create('Ext.grid.plugin.CellEditing', {// RowEditing clicksToEdit: 2, listeners: { 'edit': function (e, s) { var selectedData = grid_DynaProperty.getSelectionModel().getSelection()[0].data; if (selectedData.ValueMethod == "1") { Ext.getCmp('pvn').setEditor( new Ext.form.field.ComboBox({ name: 'PropertyValueName', typeAhead: true, store: comboData_DynaPropertyValue, valueField: "PropertyValueName", displayField: "PropertyValueName", queryMode: 'remote', //local remote triggerAction: 'all', lazyRender: true, repeatTriggerClick: true, listeners: { "expand": function (combo, store, index) { var selectedData = grid_DynaProperty.getSelectionModel().getSelection()[0].data; comboData_DynaPropertyValue.load({ params: { PropertyId: selectedData.PropId, start: startDynaProperty, limit: limitDynaProperty } }); } } })); } else { Ext.getCmp('pvn').setEditor(new Ext.form.field.Text()); } } } }); var grid_DynaProperty = Ext.create('Ext.grid.Panel', { store: store_DynaProperty, autoWidth: true, aotuHeight: true, animCollapse: false, enableColumnMove: false, enableHdMenu: false, loadMask: true, loadMask: { msg: '正在载入数据,请稍候...' }, viewConfig: { forceFit: true, stripeRows: true }, forceFit: true, //列表宽度自适应 stripeRows: true, //斑马线 autoSizeColumns: true, //根据每一列内容的宽度自适应列的大小 trackMouseOver: true, //鼠标移动时高亮显示 selModel: { selType: 'checkboxmodel' }, //选择框 scroll: true, plugins: [rowEditing], columns: [{ header: '序号', xtype: 'rownumberer', align: 'left', width: 50 }, { header: '属性', dataIndex: 'PropertyName', width: 200 }, { header: '填值方式', dataIndex: 'ValueMethod', width: 200, renderer: function (v, nv, v1) { if (v == "1") { return '选择属性值'; } else { return '手输属性值'; } } }, { header: '属性英文名', id: 'PropertyEngName', dataIndex: 'PropertyEngName', width: 200, editor: { allowBlank: true } }, { header: '属性值', id: 'pvn', dataIndex: 'PropertyValueName', width: 130, editor: { xtype: 'numberfield' } }] });
我的小鱼你醒了,
还认识早晨吗?
昨夜你曾经说,
愿夜幕永不开启。
初吻吻别的那个季节,
不是已经哭过了吗?
你的香腮边轻轻滑落的,
是你的泪,还是我的泪。
我的指尖还记忆著,
你慌乱的心跳。
温润的体香里,
那一缕长髮飘飘。
——青青树 《魁拔》
交流群:ASP.NET交流群(2群) 58189568
ExtJs4.2交流群(3群)97869295
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决