我正在使用带有column reorder extension的dgrid。我有两个问题 -
我看到重新排序列后,列在subRows
网格中的新订单中显示(请注意,我此处未提及subRow
)。这是获得列顺序的最佳方式还是有任何替代/更好的方法来执行此操作?
我知道我需要注意保存列顺序(或任何其他属性)并恢复它。当我使用保存的订单创建网格时,最好的方法是什么?我应该在保存的订单中创建列,还是可以按标准顺序创建列,然后按照保存的订单重新排序?如果后者是可能的,我该怎么办?
谢谢,
答案 0 :(得分:1)
是的,subRows
可能是获得列顺序最一致的方法。
关于保存/恢复,我可以理解做类似以下的事情。请注意,为简单起见,我在这里做了一些假设:
保存子行时,只保存每列引用的字段(这将使序列化变得微不足道):
var persistedSubRow = grid.subRows[0].map(function (column) {
return column.field;
}
然后,在创建网格时,按默认顺序(如果没有持久设置可用于设置columns
)具有列的对象哈希值,但如果存在持久设置,则使用它通过将其映射回哈希来确定顺序:
var columns = {
field1: ...,
field2: ...,
...
}
if (persistedSubRow) {
persistedSubRow = persistedColumns.map(function (field) {
var column = columns[field];
// Normally when an object hash is specified for columns,
// field is autodetected from the key. Converting to array will
// lose that, so set it within the object.
column.field = field;
return column;
});
}
var grid = new Grid({
// grid.columns accepts either an object or array as input
columns: persistedSubRow || columns,
...
});
如果你遇到麻烦,请告诉我。我在这里从臀部开始拍摄,并没有测试过上面的内容。