To reproduce: DataTable dt = new DataTable(); public Form1() { InitializeComponent(); dt.Columns.Add("Id", typeof(int)); dt.Columns.Add("ParentID", typeof(int)); dt.Columns.Add("NodeName", typeof(string)); dt.Rows.Add(1, 0, "Category1"); dt.Rows.Add(2, 1, "Category2"); dt.Rows.Add(3, 0, "Category3"); dt.Rows.Add(4, 3, "Category4"); dt.Rows.Add(5, 3, "Category5"); dt.Rows.Add(6, 3, "Category6"); dt.Rows.Add(7, 6, "Category7"); dt.Rows.Add(8, 6, "Category8"); this.radTreeView1.DataSource = dt; this.radTreeView1.DisplayMember = "NodeName"; this.radTreeView1.ChildMember = "ID"; this.radTreeView1.ParentMember = "ParentID"; this.radTreeView1.ExpandAll(); this.radTreeView1.AllowAdd = true; this.radTreeView1.AllowRemove = true; this.radTreeView1.AllowDefaultContextMenu = true; this.radLabel1.Text = "Number of rows: " + dt.Rows.Count; this.radTreeView1.NodeRemoved += radTreeView1_NodeRemoved; } private void radTreeView1_NodeRemoved(object sender, Telerik.WinControls.UI.RadTreeViewEventArgs e) { this.radLabel1.Text = "Number of rows: " + dt.Rows.Count; } Workaround: perform the delete operation programmatically by modifying the default context menu: this.radTreeView1.ContextMenuOpening += radTreeView1_ContextMenuOpening; private void radTreeView1_ContextMenuOpening(object sender, TreeViewContextMenuOpeningEventArgs e) { foreach (RadMenuItem item in e.Menu.Items) { if (item.Text == "&Delete") { item.Visibility = Telerik.WinControls.ElementVisibility.Collapsed; } else { item.Visibility = Telerik.WinControls.ElementVisibility.Visible; } } RadMenuItem removeItem = new RadMenuItem("Remove"); e.Menu.Items.Add(removeItem); removeItem.Click += item_Click; } private void item_Click(object sender, EventArgs e) { DeleteSubNodes(this.radTreeView1.SelectedNode); this.radLabel1.Text = "Number of rows: " + dt.Rows.Count; } private void DeleteSubNodes(Telerik.WinControls.UI.RadTreeNode node) { if (node.Nodes.Count == 0) { dt.Rows.Remove(((DataRowView)node.DataBoundItem).Row); } else { foreach (RadTreeNode n in node.Nodes) { DeleteSubNodes(n); } dt.Rows.Remove(((DataRowView)node.DataBoundItem).Row); } }