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