我有一个看起来像这样的JSON数据源:
var productDataSource = new kendo.data.DataSource({
transport: {
read: {
url: 'http://...',
dataType: "json"
}
},
pageSize: 10
});
并返回这样的内容:
{
"ProdSet1":[
{
"Name": "Product 1-1",
"Price": 20,
"Quantity": 50,
"Change": 4
},
{
"Name": "Product 1-2",
"Price": 14,
"Quantity": 74,
"Change": 5
}
],
"ProdSet2":[
{
"Name": "Product 2-1",
"Price": 15,
"Quantity": 12,
"Change": 2
}
]
}
然后我有多个使用这个dataSource的网格:
$("#prodSet1").kendoGrid({
dataSource: productDataSource,
columns: [
{ field: "ProdSet1[0].Name", title: "Name" },
{ field: "ProdSet1[0].Price", title: "Price" },
{ field: "ProdSet1[0].Quantity", title: "Quantity" },
{ field: "ProdSet1[0].Change", title: "Change" }
]
});
$("#prodSet2").kendoGrid({
dataSource: productDataSource,
columns: [
{ field: "ProdSet2[0].Name", title: "Name" },
{ field: "ProdSet2[0].Price", title: "Price" },
{ field: "ProdSet2[0].Quantity", title: "Quantity" },
{ field: "ProdSet2[0].Change", title: "Change" }
]
});
但是{ field: "ProdSet1[0].Name" ...}
无效。
如何引用正确的产品数据?
答案 0 :(得分:2)
由于集合是在返回对象中命名的,因此可以将schema.data属性设置为每个ProdSet,并将网格绑定到它。
我会使用datasource.read()
从数据源手动获取数据var datafromService = productDataSource.read();
文档...... http://docs.telerik.com/kendo-ui/documentation/api/framework/datasource#methods-read
然后将每个网格绑定到该datafromService,每个网格都指定要绑定到的JSON对象内的集合。
$("#prodSet1").kendoGrid({
dataSource: {
data: datafromService,
schema: {
data: 'ProdSet1'
}
},
columns: [
{ field: "Name", title: "Name" },
{ field: "Price", title: "Price" },
{ field: "Quantity", title: "Quantity" },
{ field: "Change", title: "Change" }
]
});
和
$("#prodSet2").kendoGrid({
dataSource: {
data: datafromService,
schema: {
data: 'ProdSet2'
}
},
columns: [
{ field: "Name", title: "Name" },
{ field: "Price", title: "Price" },
{ field: "Quantity", title: "Quantity" },
{ field: "Change", title: "Change" }
]
});
现在,它们将绑定到同一组数据,只显示JSON数据中的不同集合。
参见示例... http://jsbin.com/dokub/1/edit
如果你需要完整的CRUD操作,那就会进入另一袋猫。