0

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

+------------------------+------------------------+
| 第 1 栏 | 第 2 栏 |
+------------------------+------------------------+
| | CB NF NF |
+------------------------+------------------------+
| | CB NF NF |
+------------------------+------------------------+
| | CB NF NF |
+------------------------------------------------+
4

1 回答 1

3

“标准”方法涉及使用功能来编辑行/列模板以包含具有 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();它应该可以工作。

人们可能已经编写了一些插件,可以为您管理这个过程的很大一部分,但这是基本概念。它不漂亮,但它有效。

于 2012-04-12T17:38:42.970 回答