【发布时间】:2016-07-05 11:16:52
【问题描述】:
我想使用 dgrid(和 dojo)创建一个类似的 PropertyGrid。据我所知,一列可能只包含一个编辑器类型。是否有任何解决方法可以为同一行中的不同单元格设置不同的编辑器控件?
Editor mixin 似乎为每行创建一个缓存的编辑器控件,但也许我错过了一些东西。
非常感谢!
【问题讨论】:
标签: dgrid
我想使用 dgrid(和 dojo)创建一个类似的 PropertyGrid。据我所知,一列可能只包含一个编辑器类型。是否有任何解决方法可以为同一行中的不同单元格设置不同的编辑器控件?
Editor mixin 似乎为每行创建一个缓存的编辑器控件,但也许我错过了一些东西。
非常感谢!
【问题讨论】:
标签: dgrid
没有可用于实现您所描述的功能的 mixin。但是,你可以做这两件事之一。
1) 您可以使用列中的 renderCell 函数代替编辑器,根据列值/行数据返回不同的输入/小部件。在这种情况下,您需要处理事件并更新商店。
2) 如果您仍想使用编辑器,有一个解决方法。通过使用 dojo/aspect。您需要听网格的 insertRow 方法。并使用单元格元素的适当小部件更新单元格。下面是相同的sn-p。
aspect.after(grid, "insertRow", lang.hitch(this, 'updateRowWidgets'));
function updateRowWidgets(rowElement){
var cell = grid.cell(rowElement, <columnid>);
var rowdata = cell.row.data;
var rowWidget = .... //Create your widget according to row data.
cell.element.widget = rowWidget;
return rowElement; // remember to return this.
}
希望这对您有所帮助。
更新:第二个选项仅适用于 editOn,因为小部件将在 editOn 事件之后显示/添加到网格中,并且您可以在此之前切换小部件。否则,小部件将在 insertRow 完成之前添加到网格中。
【讨论】: