Kendo ui 将多个项目(如数组)添加到现有Kendo UI数据源
我已经为此工作了几个小时,无法找到一种方法使它正常工作。我正在寻找将数组内容添加到现有KendoUI数据源的正确方法。基本上我有4个SharePoint列表,我使用DataJS从每个列表中获取数据。然后我想在剑道网格视图中显示项目,但我不想使用Kendo ui 将多个项目(如数组)添加到现有Kendo UI数据源,kendo-ui,datajs,Kendo Ui,Datajs,我已经为此工作了几个小时,无法找到一种方法使它正常工作。我正在寻找将数组内容添加到现有KendoUI数据源的正确方法。基本上我有4个SharePoint列表,我使用DataJS从每个列表中获取数据。然后我想在剑道网格视图中显示项目,但我不想使用for语句和add()方法添加项目。我已经尝试直接在数组上使用add()方法,但这只是将数组作为对象本身添加到数据源中,当然,这不是预期的行为。我还尝试使用dataSource.data.concat(),但收到错误: 对象不支持属性或方法“concat”
for
语句和add()
方法添加项目。我已经尝试直接在数组上使用add()
方法,但这只是将数组作为对象本身添加到数据源中,当然,这不是预期的行为。我还尝试使用dataSource.data.concat()
,但收到错误:
对象不支持属性或方法“concat”
假设新数据位于一个名为
newData
的数组中。您可以使用:
var newData = [
{ ... },
{ ... },
{ ... }
];
$.merge(newData, datasource._pristine);
datasource.data(newData);
上述解决方案对我不起作用。Telerik管理员建议的方法如下:
var vm = kendo.observable({
data: new kendo.data.ObservableArray([])
});
vm.data.push.apply(vm.data, [ 1, 2, 3]);
这种方式会导致绑定小部件的一次呈现。在此处找到:这似乎对我不起作用,因为我的数据源是一个延迟加载的Web API服务。因此,当我这样做时,数据源还没有加载,我只得到了我试图合并的新常量项。我被卡住了吗?或者有没有办法让Web API服务起作用?请注意
$.merge()
参数的顺序!如果应该追加newData
(不加前缀),那么它应该是第二个参数。同样在我的剑道版本中,属性\u pristineData
,而不是\u pristine
。最后,通过直接使用.data()将datasource.data(…)
设置为新值,您将“分离”远程服务。相反,我使用模式:{data:function(){}}
返回数据,就好像它是从已合并的远程服务返回的一样