This question is locked. New answers and comments are not allowed.
OfficeHeart
Top achievements
Rank 1
OfficeHeart
asked on 27 Aug 2012, 09:56 AM
Hi,
Is it possible to find a node by id (clientside)?
Here is how we populate the treeview.
public
JsonResult _AjaxLoading(
string
id)
{
IEnumerable nodes = from item
in
GetDirectorys()
where (id ==
null
? item.parent ==
""
: item.parent == id)
select
new
{
id = item.directory,
Name = item.name,
hasChildren = item.aantal > 0,
};
return
Json(nodes, JsonRequestBehavior.AllowGet);
}
5 Answers, 1 is accepted
0
Accepted
Hello Martin,
Alex Gyoshev
the Telerik team
You can use the HierarchicalDataSource get method if you use a build newer than 2012.2.725. It will return the dataItem that contains the given id. After that, you can get the node reference through the treeview getByUid, supplying the dataItem uid:
var dataSource = treeview.dataSource;
var dataItem = dataSource.get(5); // find item with id = 5
var node = treeview.findByUid(dataItem.uid);
Alex Gyoshev
the Telerik team
Join us on our journey to create the world's most complete HTML 5 UI Framework - download Kendo UI now!
0
Horacio
Top achievements
Rank 1
answered on 21 Nov 2012, 01:13 PM
Hello Alex
I'm new with Kendo. I'm trying to do something like you said but it doesn't work for me. I think that I have the build 2012.2.710 but I have not yet paid the license because I'm testing Kendo to develop my app. Should I get the commercial license to get the build you said?
Thanks in advance,
H
I'm new with Kendo. I'm trying to do something like you said but it doesn't work for me. I think that I have the build 2012.2.710 but I have not yet paid the license because I'm testing Kendo to develop my app. Should I get the commercial license to get the build you said?
Thanks in advance,
H
0
Chris H.
Top achievements
Rank 1
answered on 04 Dec 2012, 11:18 AM
I've tried to use the 'get' method of HierarchicalDataSource on version v2012.3.1114 without success.
It seems that the child-items haven't been properly loaded with it's properties
The only way I've made this work, is by calling
treeview.expand(".k-item"); (expand the whole tree) BEFORE calling dataSource.get(); on a child-item
EDIT:
I finally managed to get it working.
The trick was to set 'loadOnDemand' property to 'false':
Seriously: These kinds of things really need to be clearly documentet . It's not the first time I've spent a couple of days trying to figure out why kendoUI isn't behaving as expected, then just to find out it was a matter of configuration
It seems that the child-items haven't been properly loaded with it's properties
The only way I've made this work, is by calling
treeview.expand(".k-item"); (expand the whole tree) BEFORE calling dataSource.get(); on a child-item
EDIT:
I finally managed to get it working.
The trick was to set 'loadOnDemand' property to 'false':
Seriously: These kinds of things really need to be clearly documentet . It's not the first time I've spent a couple of days trying to figure out why kendoUI isn't behaving as expected, then just to find out it was a matter of configuration
var faqMenu=$("#menutree");
faqMenu.kendoTreeView({
dataSource: dsFaqCategories,
loadOnDemand:false
});
0
Andrii
Top achievements
Rank 1
answered on 30 May 2013, 03:23 PM
Hi! Method of Alex Gyoshev helps only when i looking for root items, but nested elements i can't find by dataSource.get(id).
Does anybody knows how to get nested node by id? Thanks!
Edited:
Sorry, it works)) It was my fault.
Does anybody knows how to get nested node by id? Thanks!
Edited:
Sorry, it works)) It was my fault.
0
Shruthika
Top achievements
Rank 1
answered on 12 Jun 2013, 03:02 PM
Hi have the same issue. can anyone help me resolve the issue?
and I select a specific node using
var inlineDefault = new kendo.data.HierarchicalDataSource({
transport: {
read: {
cache: false,
url: "/menu/GetTree",
dataType: "json",
data: { 'id': $('#menuId').val(), 'netId': $('#networkId').val() }
}
},
schema: {
model: {
id: "id",
children: "Items",
hasChildren: "hasChildren"
}
}
});
$("#treeview").kendoTreeView({
template: '# if(item.isOvr) { # <
b
>#=item.txt#</
b
># } else { ##=item.txt## }#',
select: function (e) {
//new node selected clear previous messages
if (this.dataItem(e.node) != null) {
this.expand(e.node);
handleTreeSelection(this.dataItem(e.node));
}
},
dataSource: inlineDefault
});
function setTreeSelectedNode(nodeId) {
var dataItem = $("#treeview").data("kendoTreeView").dataSource.get(nodeId);
var node = $("#treeview").data("kendoTreeView").findByUid(dataItem.uid); // Error : dataitem is null if I pass the child Id
$("#treeview").data("kendoTreeView").select(node);
$("#treeview").data("kendoTreeView").expand(node);
}