“标准”方法涉及使用功能来编辑行/列模板以包含具有 id 的 div,然后使用配置将组件渲染到这些 div 中renderTo
。但是,由于您是按列而不是按行工作,因此您可以采用更简单的方法。
在您的列配置中,使用这样的自定义渲染器:
// May not be exact, I just came up with this on the spot
renderer: function(value, metaData, record, rowIdx, colIdx, store, view) {
return [
"<div id='combobox_", rowIdx, "'></div>",
"<div id='numberfield_1_", rowIdx, "'></div>",
"<div id='numberfield_2_", rowIdx, "'></div>"
].join("");
}
因此,现在该列中的每个单元格都有三个具有唯一 ID 的 div(您可能需要将“rowIdx”替换为其他一些标识方法,例如 record.id)。然后由您来创建组件并保持它们呈现。
请注意,refresh
每次网格更新时都会调用网格视图的方法,包括排序、过滤、隐藏列等。因此您需要注意afterrefresh
事件或类似的事情并根据需要重新渲染您的组件。要欺骗渲染的组件重新渲染,使用myComponent.rendered = false; myComponent.render();
它应该可以工作。
人们可能已经编写了一些插件,可以为您管理这个过程的很大一部分,但这是基本概念。它不漂亮,但它有效。