After few hours of troubleshooting, figured out that OnClientNodeEdited is too early for removing node with .get_nodes().remove(node).
The code is as follows:
ASPX:
VB:
If something is called "OnClientNodeEdited " one expects that all work is finished and no problem for remove should exists. But, it is not that way.
Partial fix is replacing remove line with:
But propper fix would be altering TreeView class and making sure when this event fires up, actions like remove are possible.
Alex
The code is as follows:
ASPX:
<%@ Page Language="VB" AutoEventWireup="false" |
CodeFile="tempPage.aspx.vb" Inherits="tempPage" %> |
<%@ Register Assembly="Telerik.Web.UI" |
Namespace="Telerik.Web.UI" TagPrefix="telerik" %> |
<html xmlns="http://www.w3.org/1999/xhtml"> |
<head> <title>Test Page</title></head> |
<body> |
<telerik:RadCodeBlock ID="RadCodeBlock1" runat="server"> |
<script type="text/javascript"> |
function FinishEditing(sender, eventArgs) |
{ |
var node = eventArgs.get_node(); |
var nodenodeParent=node.get_parent(); |
nodeParent.get_nodes().remove(node); |
} |
function FolderContextClicked(sender, eventArgs) |
{ |
var node=eventArgs.get_node(); |
node.startEdit() |
} |
</script> |
</telerik:RadCodeBlock> |
<form id="form1" runat="server"> |
<telerik:RadScriptManager ID="RadScriptManager1" runat="server"> |
</telerik:RadScriptManager> |
<telerik:RadTreeView ID="FolderView" runat="server" |
AllowNodeEditing="true" |
OnClientNodeEdited="FinishEditing" |
MultipleSelect="false" ShowLineImages="true" |
OnClientContextMenuItemClicked="FolderContextClicked" |
Skin="Outlook"> |
<CollapseAnimation Duration="100" Type="OutQuint" /> |
<ExpandAnimation Duration="100" /> |
<ContextMenus> |
<telerik:RadTreeViewContextMenu |
ID="FolderContextMenuForJunk" Skin="Outlook"> |
<Items> |
<telerik:RadMenuItem Text="Edit" |
Value="Edit"></telerik:RadMenuItem> |
</Items> |
</telerik:RadTreeViewContextMenu> |
</ContextMenus> |
</telerik:RadTreeView> |
</form> |
</body> |
</html> |
VB:
Imports System.Data.SqlClient |
Imports System.Data |
Partial Class tempPage |
Inherits System.Web.UI.Page |
Protected Sub Page_Load(ByVal sender As Object, _ |
ByVal e As System.EventArgs) Handles Me.Load |
Dim objNode As New Telerik.Web.UI.RadTreeNode("One", "One") |
FolderView.Nodes.Add(objNode) |
objNode = New Telerik.Web.UI.RadTreeNode("Two", "Two") |
FolderView.Nodes.Add(objNode) |
objNode = New Telerik.Web.UI.RadTreeNode("Three", "Three") |
FolderView.Nodes.Add(objNode) |
End Sub |
End Class |
If something is called "OnClientNodeEdited " one expects that all work is finished and no problem for remove should exists. But, it is not that way.
Partial fix is replacing remove line with:
window.setTimeout(function() { |
nodeParent.get_nodes().remove(node);}, 200); |
But propper fix would be altering TreeView class and making sure when this event fires up, actions like remove are possible.
Alex