dgrid自定义排序问题(dgrid custom sort issue)

2019-10-29 04:58发布

我试图覆盖dgrid排序逻辑由kfranqueiro在这个环节上建议- https://github.com/SitePen/dgrid/issues/276 。

我得到的排序顺序服务器上的数据,只是想更新的列标题的UI。 我这样做 -

On(mygrid, 'dgrid-sort', lang.hitch( this,function(event){
    var sort = event.sort[0];
    var order = this.sort.descending ? "descending" : "ascending";
    console.log("Sort "+ this.sort.property + " in " +order+" order.");
    event.preventDefault();
    mygrid.updateSortArrow(event.sort, true);
    myFunctionToRefreshGrid();
}));
...
myFunctionToRefreshGrid: function() {
   ...//get data from server in sorted order
   var mystore = new Memory({data: sortedDataFromServer, idProperty: 'id'});
   mygrid.set("collection", mystore);
   ...
}

Memory这里是"dstore/Memory" 。 我使用dgrid 0.4, dstore 1.1dojo 1.10.4

拨打电话之前set('collection',...)我看到sortedDataFromServer在所需的排序顺序。 但由于某些原因,在网格中的顺序不同。 例如,按降序排序时,我看到开始下壳体中的值首先出现在降序排列,然后开始大写值出现在排序顺序。 它看起来像dstore做更多的东西。

可能是什么回事? 难道我做错了什么? 是否有不同的/更好的方式做自定义排序?

谢谢,

Answer 1:

这是我结束了解决这种局面 - 由于怀疑,收集/存储进一步整理我的数据,因此不一致。 我定制的存储(存储器),如下图所示数据和设定数据时,我的网格使用自定义存储。

var CustomGridStore = declare([Memory],{
    sort: function (sorted) {
        sorted = [];//Prevent the collection from sorting the data
        return this.inherited(arguments);
    }
});


Answer 2:

我认为你正在做正确的事情,在这里唯一的问题是,你是不是重置电网的sort属性,一个与排序顺序您重新启动的内存,它得到的自动排序

您所呼叫后

event.preventDefault();

调用此

  mygrid.set("sort", null);

我做的自定义排序在我的网格的一个如下

                self.xrefGrid.on("dgrid-sort", function (event) {
                var sort = event.sort[0];
                    event.preventDefault();
                    self.xrefGrid.set('sort', function (a, b) {
                        var aValue,bValue;
                        if (a[sort.attribute] && typeof a[sort.attribute] == "string")
                             aValue = a[sort.attribute].toLowerCase();
                        if (b[sort.attribute] && typeof b[sort.attribute] == "string")
                             bValue = b[sort.attribute].toLowerCase();
                        var result = aValue > bValue ? 1 : -1;
                        return result * (sort.descending ? -1 : 1);
                    });
                    self.xrefGrid.updateSortArrow(event.sort, true);
            });


文章来源: dgrid custom sort issue