ExtJs:网格单元格中的多个表单对象

时间:2012-04-12 14:37:34

标签: javascript extjs4

有没有办法在一列中放置一个复选框和2个数字字段?像

这样的东西
+-----------------------+-----------------------+
|        Column 1       |        Column 2       |
+-----------------------+-----------------------+
|                       |    CB     NF     NF   |
+-----------------------+-----------------------+
|                       |    CB     NF     NF   |
+-----------------------+-----------------------+
|                       |    CB     NF     NF   |
+-----------------------------------------------+

1 个答案:

答案 0 :(得分:3)

“标准”方法涉及使用功能编辑行/列模板以包含带有ids的div,然后将组件呈现为具有renderTo配置的div。但是,由于您按列而不是按行工作,因此可以采用更简单的方法。

在您的列配置中,使用如下自定义渲染器:

// 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();,它应该可以正常工作。

人们编写的插件可能会为您管理此过程的很大一部分,但这是潜在的概念。它不漂亮,但它有效。