Art Kedzierski
Top achievements
Rank 2
Art Kedzierski
asked on 17 Mar 2014, 04:40 PM
Just started using Kendo.UI and I can't seem to find any documentation on how to do what I need in JavaScript. I have a ORM Entity Model I'm accessing in the web project via a web service (oData/JSON). I can get the top-level data of any table just fine. But let's say I have a table called Devices (because I do) and it has a association called DeviceHasLocation (because it does) and I want to display the Name of the associated Location in a grid of Devices. What would the code for that look like?
I need to do something similar for a LOT of these associations, so a reusable methodology would be much appreciated.
I need to do something similar for a LOT of these associations, so a reusable methodology would be much appreciated.
5 Answers, 1 is accepted
0
Hi,
Where should the detail data be displayed? You can show it in a detail as demonstrated in this demo. The approach will be similar if the data is included in the master model. Here is a modified version of the demo that demonstrates this case.
Regards,
Daniel
Telerik
Where should the detail data be displayed? You can show it in a detail as demonstrated in this demo. The approach will be similar if the data is included in the master model. Here is a modified version of the demo that demonstrates this case.
Regards,
Daniel
Telerik
Join us on our journey to create the world's most complete HTML 5 UI Framework - download Kendo UI now!
0
Art Kedzierski
Top achievements
Rank 2
answered on 19 Mar 2014, 01:45 PM
I want to display in as a column in the Device grid, for example:
Device.Name | Device.Vendor | Device.Product | Device.Location.Name
I'll take a look at that revised demo.
Device.Name | Device.Vendor | Device.Product | Device.Location.Name
I'll take a look at that revised demo.
0
Art Kedzierski
Top achievements
Rank 2
answered on 19 Mar 2014, 02:45 PM
I'm not looking for a detail row as the one-to-many relationship is the other direction; one Location has many Devices. I want columns from the parent record displayed with the child record in a grid.
0
Art Kedzierski
Top achievements
Rank 2
answered on 19 Mar 2014, 05:38 PM
I figured it out from the following demo: http://jsbin.com/OVOCAmu/2/edit. here's is the code I ended up using:
<div id="grid_devices" style="height: 380px"></div><script> $(document).ready(function () { var locationsDataSource = new kendo.data.DataSource({ type: "odata", schema: { data: function (data) { if (data.value) { return data.value; } delete data["odata.metadata"]; return [data]; }, total: function (data) { return data["odata.count"]; } }, sort: { field: "Name", dir: "asc" }, transport: { read: "/GLMEntitiesModelService.svc/Locations" } }); locationsDataSource.read(); locationsDataSource.one("change", function () { var values = [], data = this.data(); for (var i = 0 ; i < data.length; i++) { values.push({ value: data[i].ID, text: data[i].Name }); } initGrid(values); }); function initGrid(values) { var gridDataSource = new kendo.data.DataSource({ type: "odata", schema: { data: function (data) { if (data.value) { return data.value; } delete data["odata.metadata"]; return [data]; }, total: function (data) { return data["odata.count"]; } }, sort: { field: "Name", dir: "asc" }, transport: { read: "/GLMEntitiesModelService.svc/Devices" } }); $("#grid_devices").kendoGrid({ dataSource: gridDataSource, filterable: true, selectable: "row", sortable: true, columns: [ { field: "Name", title: "Device", width: 250 }, { field: "Vendor", title: "Vendor", width: 175 }, { field: "Product", title: "Product", width: 250 }, { field: "Component", title: "Component" }, { field: "LocationFK", title: "Location", values: values }] }); }; });</script>0
Art Kedzierski
Top achievements
Rank 2
answered on 20 Mar 2014, 03:39 PM
And I figured out the $expand option (documentation on that is SCARCE).
And then in my grid columns descriptors:
var gridDataSource = new kendo.data.DataSource({ type: "odata", schema: { data: function (data) { if (data.value) { return data.value; } delete data["odata.metadata"]; return [data]; }, total: function (data) { return data["odata.count"]; } }, pageSize: 10, scrollable: false, sort: { field: "Name", dir: "asc" }, transport: { read: { url: "/GLMEntitiesModelService.svc/Devices", data: { $expand: "Location" } } }});And then in my grid columns descriptors:
{ field: "Location.Name", title: "Location", width: 250 },