2015-04-29 43 views
1

我已经尝试了几个关于我的问题的几个提示和技巧 - 我无法完成。

我想用Kendo UI Grid替换一个trNgGrid。 trNgGrid似乎有点不同。它从$ scope变量中获取数据,我调用$ scope.items。只要需要刷新数据(筛选,分页,排序事件...),网格就会调用一个函数。 里面函数我打电话给我的SharePoint服务来获取项目,然后用sharepoint列表中的新数据覆盖$ scope.items。

var getItemsFromSPService = function() { 
    SP.SOD.executeFunc('sp.js', 'SP.ClientContext', function() { 
     SPService.loadItems($scope.gridParams).then(function (result) { 
      $scope.items = result.items; 
     }); 
    }); 
}; 

网格刷新。可悲的是,没有休息/肥皂Web服务我可以消费 - 我使用标准的Sharepoint客户端上下文方法来获取数据。由于那个共享点SP.SOD.stuff,我还没有找到解决方案返回项目从我的功能。我只是能够用数据填充变量或调用另一个函数并将数据发送给它。这当然都是异步的。

我试图在Kendo UI Grid指令中设置$ scope.items作为数据源 - 当变量被更新时它不刷新。我试过$ scope.grid.refresh - 什么都没有。我尝试从剑道观察数组 - 没有运气。

我觉得可能是使用网格选项的方式:

dataSource: { 
     serverFiltering: true, 
     transport: { 
     read: function(options) { 
      options.success(.... 

,但我不能明白这一点。

  • 因此,我可以用新数据刷新$ scope.items,或者我的函数可以调用任何其他函数并将数据包含为参数 - 网格也需要刷新。我怎么能告诉它“嘿,$ scope.items得到更新 - 显示它!”?
  • 我需要IE8
  • 支持我需要服务器端排序,过滤,分页 - 电网需要触发事件,使我的功能,可以刷新数据

是有任何解决方案?这太疯狂了,那么“微不足道”的东西似乎非常棘手:O

非常感谢你!

回答

0

在我的应用程序,当我想刷新网格我使用

$scope.gridName.dataSource.read(); 

但你需要在功能上实现阅读你的逻辑。就像你在你的例子中显示的那样

例如,创造电网的功能可能是如果您已经定义了一个函数读取网格数据可以刷新网格与$ scope.gridName.dataSource.read像这样

$scope.createGrid = function() { 
    $scope.kendoGridOpMantOptions = { 
     dataSource: { 
     schema: { 
      // your schema... 
     }, 
     transport: { 
      read: function (e) { 
        // call to service that return data 
      } 
     } 
     } 
     // More grid configuration 
    } 
} 

();

关于IE8,我不确定。我正在阅读关于此问题的很多IE问题。

祝你好运!