有没有一种方法可以将复选框和2个数字字段放在同一列中?就像是

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

最佳答案

“标准”方法涉及使用功能来编辑行/列模板以包含具有ID的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(您可能需要用其他一些标识方法(例如record.id)替换“ rowIdx”。然后由您决定创建组件并保持其呈示状态。

请注意,每次网格更新时都会调用网格视图的refresh方法,包括排序,过滤,隐藏列等。因此,您需要注意afterrefresh事件或类似事件,然后重新渲染组件如所须。要诱使渲染的组件重新渲染,请使用myComponent.rendered = false; myComponent.render();,它应该可以工作。

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

关于javascript - ExtJs:网格单元中的多个表单对象,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10125850/

10-12 13:14