DHTMLX网格过滤器在重置后初始化延迟

时间:2014-10-24 09:49:03

标签: javascript grid dhtmlx

奇怪的是,不确定我的应用程序中的其他代码是否导致了这个问题,但是这里也是。

当我第一次用数据填充网格时,它允许我立即使用过滤器。当我点击我的重置按钮(过滤器中有文本)清除网格并准备下次加载时,过滤器不能立即工作,似乎我必须等待大约5秒才能过滤器调整数据。这是我的代码,请记住,此代码运行重置按钮和搜索按钮,这意味着在某些情况下,它可能会在网格填充新数据之前运行两次。

重置代码(在服务中调用):

clearAll: function (ref) {
        var gridObj = dhtmlxObjectArray[ref];
        if(gridObj){
            gridObj.clearAll();
            if (gridObj.hdr.rows[1].cells[0].getElementsByTagName("INPUT")[0]) {
                gridObj.hdr.rows[1].cells[0].getElementsByTagName("INPUT")[0].checked = 0;
            }
            $rootScope.$broadcast("cvsGridService_toggleExport_" + ref, true);
            for (var i = 0; i < gridObj.getColumnsNum(); i++) {
                if (gridObj.getFilterElement(i) != null) {
                    var filterObj = gridObj.getFilterElement(i);
                    filterObj.value = "";
                }
            }
            $scope.$evalAsync();
        }
        $rootScope.$broadcast("cvsGridService_updateGridCount_" + ref);
        $rootScope.$broadcast("cvsGridService_updateFilteredCount_" + ref, 0);
    }

for循环是将过滤器设置为空白的位置。所以我想知道它是否有任何关系呢?还有其他想法吗?

1 个答案:

答案 0 :(得分:1)

也许您没有正确清除过滤器?我就是这样做的,它运行良好:

for (var i=0; i<grid.filters.length; i++){
    grid.filters[i][0].value="";
    grid.filters[i][0].old_value="";
}
grid.filterByAll();