i've got method in controller returns list<treeviewitemmodel>()
i'm populating correct hierarchy. seems serialize correctly, when load treeview, don't have of hierarchy, first level of nodes.
example:
each of above curricula has 2/3 scenarios underneath i've verified getting added items base object when going curriculum => treeviewitemmodel
controller:
public jsonresult getavailablecurricula(string locationid) { locationid = "1"; if(locationid != string.empty) { var results = logic.getfilteredcurriculum().select(c => curriculumtotreeview(c)); return json(results, jsonrequestbehavior.allowget); } else { return json(new list<treeviewitemmodel>(),jsonrequestbehavior.allowget); } } private treeviewitemmodel curriculumtotreeview(curriculummodel c) { var tree = new treeviewitemmodel() { id = c.curriculumid.tostring(), text = c.curriculumname, haschildren = c.scenarios.any() }; if (tree.haschildren) { tree.items = c.scenarios.select(scenario => new treeviewitemmodel() { text = scenario.name, } ).tolist(); } return tree; }
view:
@(html.kendo().treeview() .name("availablecurricula") .datatextfield("text") .datasource(source => source .read(read => read .action("getavailablecurricula", "traineeassignments") .data("filteravailablecurricula") ) )
is there step need take bind child objects , parent, instead of 1 level @ time? have small set of data don't need reload often, hoping avoid loading each level individually/on-demand.
in case it's helpful, here's raw json i'm sending controller 1 of curricula:
{"enabled":true,"expanded":false,"encoded":true,"selected":false,"text":"operator b","spritecssclass":null,"id":"1","url":null,"imageurl":null,"haschildren":true,"checked":false,"items":[{"enabled":true,"expanded":false,"encoded":true,"selected":false,"text":"test 2","spritecssclass":null,"id":null,"url":null,"imageurl":null,"haschildren":false,"checked":false,"items":[],"htmlattributes":{},"imagehtmlattributes":{},"linkhtmlattributes":{}},{"enabled":true,"expanded":false,"encoded":true,"selected":false,"text":"scenario ii","spritecssclass":null,"id":null,"url":null,"imageurl":null,"haschildren":false,"checked":false,"items":[],"htmlattributes":{},"imagehtmlattributes":{},"linkhtmlattributes":{}}],"htmlattributes":{},"imagehtmlattributes":{},"linkhtmlattributes":{}}
i believe remote data option treeview uses ajax load child data, either on demand or @ initial load - controlled loadondemand
option.
the remote data examples in kendo docs behave way. how implemented on a previous project. full code example includes treeview grid.