如何为 Dojo DataGrid 中的同一列指定不同的编辑器小部件

How to specify different editor widgets for the same column in Dojo DataGrid

我想知道,是否有官方方法可以为 DataGrid(不同行)中的同一列指定不同的小部件编辑器?

找到了dojox.grid.cells._MultipleEditor,但是比较复杂,官方不支持

这是为了创建像 属性 sheet 和 DataGrid 这样的东西。

编辑:人们似乎建议使用 dgrid。但是,我不确定 dgrid 是否有此功能。另外,不幸的是,... 鼓声...恐怖音乐...我必须支持IE6。

好吧,似乎有办法做到这一点。似乎没有显示出太多负面影响(到目前为止)...

  1. 为每个值类型创建一列,一列接一列。

  2. 用 CSS class 标记每列以指示其值类型(通过 classes)。例如:classes="multivalue int"

  3. 对于每一列,使用正确的编辑器小部件和适当的约束和选项对其进行标记。

  4. 在与每种类型相对应的每一行(onStyleRow)上放置样式。例如,将 type-int class 添加到具有 int 类型的行。

  5. 放入最初隐藏所有 multi-valued 单元格的 CSS 样式:

    .dojoxGridCell.multivalue { display:none; }
    
  6. Un-hide 所有类型正确的单元格:

    .dojoxGridRow.type-int .dojoxGridCell.multivalue.int
    {
        display:table-cell;
        *display:block;  /* For IE6/7 */
    }
    

    显然,每一行都必须与 一个 列完全匹配。

  7. 显然,您必须将所有这些字段设置为相同的 属性 名称。 DataGrid 允许你这样做。

  8. display:none(通过 CSS 等)放在 multi-valued 列的所有 header 单元格上 除了第一个一个。否则,您最终会得到太多 header 个单元格。