We are using 2 treeviews to allow users to move items from one to the other. After moving the selected items, we are programmatically setting the next node available as selected. When we try to multi-select again after the move we get the following error:
Microsoft JScript runtime error: Unable to get value of the property 'get_nodes': object is null or undefined
Here is a snippet of our JS source.
Microsoft JScript runtime error: Unable to get value of the property 'get_nodes': object is null or undefined
Here is a snippet of our JS source.
function
Left() {
if
(availableTree.get_selectedNode()) {
var
sourceNodes = availableTree.get_selectedNodes();
var
index = sourceNodes[0].get_index();
var
destNodeList = selectedTree.get_nodes();
var
destNode;
if
(destNodeList) {
destNode = destNodeList.getNode(0);
}
onNodeDroppingPrivate(availableTree, sourceNodes, destNode,
"add"
);
if
(availableTree.get_nodes().get_count() == index) {
index = index - 1;
}
availableTree.get_nodes().getNode(index).set_selected(
true
);
}
else
{
alert(
"Please select a service level to transfer"
);
}
SetSaveToFalse();
}
function
onNodeDroppingPrivate(sender, sourceNodes, destinationNode, position) {
var
retVal = dropOnTree(sourceNodes);
/*gets value of dragged node*/
if
(retVal !=
"0"
) {
clientSideEdit(sender, sourceNodes, destinationNode, position);
}
else
{
alert(
"There are no service levels to transfer."
);
}
SetSaveToFalse();
}
function
dropOnTree(sourceNodes) {
var
text =
""
;
if
(sourceNodes.length) {
var
i;
for
(i = 0; i < sourceNodes.length; i++) {
var
node = sourceNodes[i];
if
(node.get_attributes().getAttribute(
"Category"
) ==
"true"
) {
node = node.get_nodes().getNode(0);
}
text = node.get_value();
break
;
}
}
return
text;
}
function
clientSideEdit(sender, sourceNodes, destinationNode, position) {
availableTree.trackChanges();
selectedTree.trackChanges();
if
(destinationNode)
{
for
(
var
i = 0; i < sourceNodes.length; i++) {
var
sourceNode = sourceNodes[i];
var
sourceParent = sourceNode.get_parent();
sourceParent.get_nodes().remove(sourceNode);
if
(sourceParent.get_nodes().get_count() == 0) {
var
node =
new
Telerik.Web.UI.RadTreeNode();
node.set_value(
"0"
);
if
(sourceParent.get_id() == availableTree.get_id())
{
node.set_text(
"All available service levels have been selected."
);
}
else
{
node.set_text(
"No service levels have been selected."
);
}
sourceParent.get_nodes().add(node);
}
if
(position ==
"over"
) insertAfter(destinationNode, sourceNode);
if
(position ==
"above"
) insertBefore(destinationNode, sourceNode);
if
(position ==
"below"
) insertAfter(destinationNode, sourceNode);
if
(position ==
"add"
) add(destinationNode, sourceNode);
}
destinationNode.set_expanded(
true
);
availableTree.commitChanges();
selectedTree.commitChanges();
}
}
function
add(destinationNode, sourceNode) {
var
destinationParent = destinationNode.get_parent();
GetAttribute(destinationParent, sourceNode);
/* If destination parent contains 'No Nodes exist', new node added takes its place*/
if
(destinationParent.get_nodes().getNode(0).get_value() ==
"0"
) {
destinationParent.get_nodes().getNode(0).set_text(sourceNode.get_text());
destinationParent.get_nodes().getNode(0).set_value(sourceNode.get_value());
AddTheEditButton(destinationParent.get_nodes().getNode(0), destinationParent.get_nodes().getNode(0));
}
else
{
if
(destinationParent.get_id() == selectedTree.get_id()) {
addEditButton(destinationNode, sourceNode,
"add"
, 0);
}
else
{
destinationParent.get_nodes().add(sourceNode);
sourceNode.set_checked(
true
);
}
}
return
"false"
;
}