我在我的项目中使用UI网格v3.0.0。最近我改变了我的代码,使用下拉列表值过滤网格。在此更改之后,当我多次过滤网格时,UI网格变为空白。这是间歇性问题,我没有收到任何javascript错误。当UI网格在应用过滤器后变为空白时,UI网格将保持空白,直到用户移动UI网格的滚动条。
我正在使用以下网格选项。
$scope.options = {
enableColumnMenus: false,
enableSelectAll: true,
enableFiltering: true,
enableHorizontalScrollbar:0,
enableRowHeaderSelection: false,
enableRowSelection: true,
data : [],
showSelectionCheckbox: true,
selectionRowHeaderWidth: 25,
rowHeight: 25,
columnDefs : $scope.columnDefs
};
$scope.options.onRegisterApi = function (gridApi) {
$scope.options = gridApi;
gridApi.selection.on.rowSelectionChanged($rootScope , function(gridApi) {
$scope.options.selected = gridApi;
});
我在调用ui网格数组后也会在grid api下面调用以进行刷新。
$scope.options.core.refresh();
但它仍然没有用。如果有人能给我一些关于如何解决这个问题的提示,我将非常感激。感谢。
答案 0 :(得分:0)
我从来没有能够让core.refresh为我工作。我实际上使用了一种解决方法。您可以尝试查看它是否有助于解决此问题。
创建功能:
$scope.refresh = false;
function refresh () {
$scope.refresh = true;
$timeout(function () {
$scope.refresh = false;
}, 0);
};
在您的网格div上添加ng-if
:
<div ng-if="!refresh" ui-grid="gridOptions" class="grid"></div>
然后在控制器中调用refresh()
,在此处/何时要刷新网格。
我希望这有帮助!
答案 1 :(得分:0)
您需要在刷新后设置滚动位置,如下所示:
$scope.options.core.refresh();
$scope.options.core.scrollTo($scope.data[0], $scope.columnDefs[0]);
答案 2 :(得分:-1)
您可以使用$ filter of angular来过滤您的剑道网格dataSource。
您可以从以下代码中获取参考,让我知道您需要的任何其他内容。
var ds = $filter('filter')($scope.grdDataSource.dataSource.data, $scope.searchText);
$scope.kendoGridOptions.dataSource.data = ds;