1 of 2 -The requirement is that a tree view gets populated after the user selects a row in a grid. I use javascript to pass the ID of the grid selection -
2 of 2 - the user should then be able to, in the tree view, load nodes on demand by expanding nodes. The code for the controller is attached.
This is setup in MVC 4 with and Index view that contains a kendo splitter pointing to two partial views -
The treeview configuration and datasource is -
The initial load is fine - the user selects a row in the grid and the tree view loads as expected. However, the crux of the problem appears to be that when treeview nodes are expanded, the code is executed with the original ID that was passed in via the javascript. This should instead be invoked with the id of the node selected, which happens due to the onExpand event.
Has anyone else experienced this issue and found a solution to it? Thanks in advance
Amit
                                2 of 2 - the user should then be able to, in the tree view, load nodes on demand by expanding nodes. The code for the controller is attached.
This is setup in MVC 4 with and Index view that contains a kendo splitter pointing to two partial views -
- List (contains the kendo grid); &
- Detail - contains the kendo tree view
01.function GridRowSelected(arg) {//row selection event02.    var grid = $("#adminGrid").data("kendoGrid");03.    var row = grid.select();04.    var data = grid.dataItem(row);05.    //alert("in List" + data.EntHID);06.    loadChildrenForEntity(data.EntHID)07.    entityId = data.EntHID;08.    //alert("in list : " + entityId);09.}01.<script type="text/javascript">02.    function loadChildrenForEntity(entityId) {03.        dataSource = new kendo.data.HierarchicalDataSource({04.            transport: {05.                read: {06.                    cache: false,07.                    url: "@Url.Action("GetChildrenForEntity", "Admin")",08.                    dataType: "json",09.                    data: function () {10.                        return {11.                            entityID: entityId12.                        };13.                    }14.                }15.            },16.            schema: {17.                model: {18.                    id: "ItemHID",19.                    hasChildren: "HasChildren"20.                }21.            }22.        });23. 24.        $("#entityDetails").kendoTreeView({25.            dataSource: dataSource,26.            //select: onSelect,27.            expand: onExpand,28.            dataTextField: "DisplayName",29.            loadOnDemand: true30.        });//.data("kendoTreeView");31.    }32. 33.    function onExpand(e) {34.        e.preventDefault();35.        var treeview = $('#entityDetails').data('kendoTreeView');36.        var node = e.node;37.        var data = treeview.dataItem(node);38.        //alert('id = ' + data.id);39.        $.ajax({40.            url: "@Url.Action("GetChildrenForEntity", "Admin")",41.            //type: "POST",42.            datatype: "json",43.            data: { entityID: data.id },44.            success: function (result) {45.                DisplayChildNodes(result, node)46.            }47.        });48.    }49. 50.    function DisplayChildNodes(result, node) {51.        var treeview = $('#entityDetails').data('kendoTreeView');52.        treeview.append(result, node);53.    }54.</script>The initial load is fine - the user selects a row in the grid and the tree view loads as expected. However, the crux of the problem appears to be that when treeview nodes are expanded, the code is executed with the original ID that was passed in via the javascript. This should instead be invoked with the id of the node selected, which happens due to the onExpand event.
Has anyone else experienced this issue and found a solution to it? Thanks in advance
Amit
