将现有的 Kendo 网格绑定到新的 JSON 对象
Posted
技术标签:
【中文标题】将现有的 Kendo 网格绑定到新的 JSON 对象【英文标题】:Binding existing Kendo grid to a new JSON object 【发布时间】:2013-11-07 20:03:16 【问题描述】:我在我的页面上有关注 kendoGrid
,加载时从指定的 URL 接收 JSON
对象。
但后来我想将它绑定到从其他来源接收到的其他一些JSON
数据。有没有办法使用新的JSON
对象绑定刷新包含网格的现有数据?
$('#grid').kendoGrid(
sortable: true,
groupable: true,
scrollable: true,
pageable:
pageSizes: 9
,
dataSource:
transport:
read:
url: "../Get/JsonData",
dataType: "Json"
,
columns: [
field: "name", title: "Name", width: 100 ,
... ...
]
);
【问题讨论】:
【参考方案1】:您可以将 DataSource 中的所有数据替换为:
var newData = [ "some", "data", "array" ];
var gridWidget = $('#grid').data("kendoGrid");
gridWidget.dataSource.data(newData);
或者你可以给网格一个全新的数据源(我推荐这种方法):
var newData = new kendo.data.DataSource(
data: [ "some", "data", "array" ]
);
var gridWidget = $('#grid').data("kendoGrid");
gridWidget.setDataSource(newData);
当然,在我的示例中,newData
就是从您的函数返回的任何数据。
【讨论】:
它在控制台中显示:[] has no method 'fetch'
其中 [] 是 newData 中的 JSON
使用哪种方法?打电话给dataSource.data()
或grid.setDataSource()
?我的猜测是你正在传递一个数组,你应该传递一个 DataSource
使用grid.setDataSource()
我正在传递一个JSON
对象,在你的情况下是data
对象,我尝试只给我的对象,你已经初始化了data
对象但没有工作。如何将我从服务器 theObject
获取的 JSON
对象转换为 DataSource?
var dataSource = new kendo.data.DataSource( data: JSON.parse(someJsonString) );
【参考方案2】:
新 JSON 的结构是否相同(相同的列和相同的数据模型)?如果是这样,那么是的,只需使用transport.read
或transport.read.url
,而不是将其定义为string
,而是将其定义为返回一个或另一个的函数。
请记住,transport.read
可能是一个对象或函数。 transport.read.url
也是如此
【讨论】:
在页面加载时,我希望它从url
加载,但在调用函数后,我希望它用函数返回的新 JSON
数据替换现有数据。跨度>
所以使用 url 进行初始加载,然后使用 grid.dataSource.data(newJSON);
替换它。
在获取数据后它给了我这个错误Uncaught ReferenceError: oSId is not defined
,oSID
是我在命令按钮 command: text: "Options", click: showHideOptions , title: " ", width: "90px", attributes: "id": "#: oSID#",
中使用的一列以上是关于将现有的 Kendo 网格绑定到新的 JSON 对象的主要内容,如果未能解决你的问题,请参考以下文章