Dgrid:如何保存和保留列顺序?
Dgrid : How to save and persist column order?
我在 column reorder extension 中使用 dgrid。我在这里有两个问题 -
我看到在对列重新排序后,这些列以新的顺序出现在网格的 subRows
属性中(请注意,我在这里不是指 subRow
).这是获取列顺序的最佳方法还是有任何 alternate/better 方法可以做到这一点?
我知道我需要负责保存列顺序(或任何其他 属性)并恢复它。当我用保存的订单创建网格时,最好的方法是什么?我应该按保存的顺序创建列,还是可以按标准顺序创建它们,然后根据我保存的订单重新排序?如果后者可以,我该怎么做?
谢谢,
是的,subRows
可能是获取列顺序的最一致的方法。
关于 saving/restoring,我可以理解做如下的事情。请注意,为了简单起见,我在这里做了一些假设:
- 你只有一个子行(同样的方法可以用于多个,我想,但你需要外部循环)
- 每列引用一个唯一字段
- 您只针对 ES5+ 环境(因为我在下面使用 ES5 数组方法)
保存子行时,只保存每列引用的字段(这将使序列化变得微不足道):
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,
...
});
如果您 运行 遇到麻烦,请告诉我;我在这里从臀部拍摄,并没有测试以上内容。
我在 column reorder extension 中使用 dgrid。我在这里有两个问题 -
我看到在对列重新排序后,这些列以新的顺序出现在网格的
subRows
属性中(请注意,我在这里不是指subRow
).这是获取列顺序的最佳方法还是有任何 alternate/better 方法可以做到这一点?我知道我需要负责保存列顺序(或任何其他 属性)并恢复它。当我用保存的订单创建网格时,最好的方法是什么?我应该按保存的顺序创建列,还是可以按标准顺序创建它们,然后根据我保存的订单重新排序?如果后者可以,我该怎么做?
谢谢,
是的,subRows
可能是获取列顺序的最一致的方法。
关于 saving/restoring,我可以理解做如下的事情。请注意,为了简单起见,我在这里做了一些假设:
- 你只有一个子行(同样的方法可以用于多个,我想,但你需要外部循环)
- 每列引用一个唯一字段
- 您只针对 ES5+ 环境(因为我在下面使用 ES5 数组方法)
保存子行时,只保存每列引用的字段(这将使序列化变得微不足道):
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,
...
});
如果您 运行 遇到麻烦,请告诉我;我在这里从臀部拍摄,并没有测试以上内容。