Completed
Last Updated: 15 Aug 2017 10:20 by ADMIN
To reproduce:

public RadForm1()
{
    InitializeComponent(); 

    for (int i = 0; i < 10; i++)
    {
        this.radTreeView1.Nodes.Add("Node1." + i); 
    }
    this.radTreeView1.AllowDragDrop = true; 
    
    this.radTreeView1.TreeViewElement.DragDropService.PreviewDragDrop+=DragDropService_PreviewDragDrop;
}

private void DragDropService_PreviewDragDrop(object sender, RadDropEventArgs e)
{
    e.Handled = true;
}
Completed
Last Updated: 15 Aug 2017 10:20 by ADMIN
To reproduce:
for (int i = 0; i < 10; i++)
{
   this.radTreeView1.Nodes.Add("Node1." + i);
}
this.radTreeView1.AllowDragDrop = true; 

this.radTreeView1.TreeViewElement.DragDropService.ShowDragHint = false;


Workaround: this.radTreeView1.TreeViewElement.DragDropService.PreviewDragHint += DragDropService_PreviewDragHint;

private void DragDropService_PreviewDragHint(object sender, PreviewDragHintEventArgs e)
{ 
    e.UseDefaultHint = false;
}
Completed
Last Updated: 15 Aug 2017 10:20 by ADMIN
To reproduce: please refer to the attached gif file.

Workaround: insteda of hiding the expander by the ShowExpandCollapse property use the NodeFormatting event as follows:

private void radTreeView1_NodeFormatting(object sender, TreeNodeFormattingEventArgs e)
        {
            e.NodeElement.ExpanderElement.Visibility = ElementVisibility.Collapsed;
        }
Completed
Last Updated: 19 Jun 2017 12:11 by ADMIN
Pressing arrow down or up when renaming item on a list with scrollbar throws null pointer exception. Example solution in attachement. 

Steps to reproduce with attached solution: 
Scroll down to last element (A99) 
Press F2 (rename) and rename to "0"
Press arrow up or down on a keyboard (without pressing enter after rename). -> NullReferenceException is thrown.
Declined
Last Updated: 23 Mar 2017 06:33 by ADMIN
Please refer to the attached screenshot from the Demo application >> General Settings example.

Workaround: 

private void radTreeView1_NodeFormatting(object sender, TreeNodeFormattingEventArgs e)
{
    e.NodeElement.ExpanderElement.Margin = new Padding(2, 0, 0, 0);
}
Completed
Last Updated: 09 Feb 2017 11:29 by ADMIN
ADMIN
Created by: Dess | Tech Support Engineer, Principal
Comments: 2
Category: TreeView
Type: Bug Report
1
To reproduce:

this.radTreeView1.TriStateMode = true;

RadTreeNode sitesNode = radTreeView1.Nodes.Add("Sites", "Sites", "");
sitesNode.Expanded = true;

RadTreeNode siteNode = new RadTreeNode("A site");
sitesNode.Nodes.Add(siteNode);

RadTreeNode eNode = new RadTreeNode("Event Types");
siteNode.Nodes.Add(eNode);
siteNode.Expanded = true;
RadTreeNode dummy = new RadTreeNode("dummy");
eNode.Nodes.Add(dummy);
dummy.CheckState = ToggleState.On;

RadTreeNode dummy2 = new RadTreeNode("dummy2");
eNode.Nodes.Add(dummy2);
dummy2.CheckState = ToggleState.Off;

Please refer to the attached screenshot. 

Workaround: change the CheckState property after all nodes are added to RadTreeView.

this.radTreeView1.TriStateMode = true;

RadTreeNode sitesNode = radTreeView1.Nodes.Add("Sites", "Sites", "");
sitesNode.Expanded = true;

RadTreeNode siteNode = new RadTreeNode("A site");
sitesNode.Nodes.Add(siteNode);

RadTreeNode eNode = new RadTreeNode("Event Types");
siteNode.Nodes.Add(eNode);
siteNode.Expanded = true;
RadTreeNode dummy = new RadTreeNode("dummy");
eNode.Nodes.Add(dummy);


RadTreeNode dummy2 = new RadTreeNode("dummy2");
eNode.Nodes.Add(dummy2);

dummy2.CheckState = ToggleState.Off; 
dummy.CheckState = ToggleState.On;
Unplanned
Last Updated: 06 Feb 2017 12:00 by ADMIN
Please refer to the attached gif file and sample project. The screen tip position is not the same each time. Hence, the issue may not be reproducible every time.

Workaround: use the TooltiptextNeeded event.
Completed
Last Updated: 02 Feb 2017 07:45 by ADMIN
Please refer to the attached gif files illustrating the working and non working design time data binding.
Completed
Last Updated: 04 Jan 2017 14:34 by ADMIN
To reproduce: 

Add a RadTreeView and a RadBreadCrumb and two RadButtons on the form and populate the tree view with data. Use the following code snippet:

private void radButton1_Click(object sender, EventArgs e)
{
    this.radBreadCrumb1.DefaultTreeView = null;
}

Random rand = new Random();

private void radButton2_Click(object sender, EventArgs e)
{
    this.radTreeView1.DataSource = null;
    DataTable dt = new DataTable();
    dt.Columns.Add("Id");
    dt.Columns.Add("Name");
    for (int i = 0; i < 10; i++)
    {
        dt.Rows.Add(rand.Next(0, 20), "Node" + i);
    }
    this.radTreeView1.DataSource = dt;
    this.radTreeView1.DisplayMember = "Name";
    this.radTreeView1.ValueMember = "Id";

    this.radBreadCrumb1.DefaultTreeView = this.radTreeView1;
}

Select some node in RadTreeView, the RadBreadCrum is updated respectively. Then click the first button to detach RadTreeView from RadBreadCrumb. Click the second button to populate RadTreeView with new data and associated the RadBreadCrumb with RadTreeView again. As a result you will notice that the last selected node will be loaded.

Workaround: clear the selection in RadTreeView before associating the RadBreadCrumb with RadTreeView:

this.radTreeView1.ClearSelection();
this.radBreadCrumb1.DefaultTreeView = this.radTreeView1;
Completed
Last Updated: 03 Jan 2017 07:06 by ADMIN
To reproduce: 

1. Add a RadTreeView and a RadBreadCrumb. Associated the breadcrumb with the tree.
2. Select a node and use the following code:
this.radBreadCrumb1.DefaultTreeView.Nodes.Clear();

Workaround: set the RadBreadCrumb.DefaultTreeView property to null.
Completed
Last Updated: 27 Dec 2016 15:14 by ADMIN
Completed
Last Updated: 30 Nov 2016 07:35 by ADMIN
Steps to reproduce: 
1. Add RadTreeView with few items 
2. Apply custom filtering 
3. In order to remove the custom filtering and return the default filtering, set the FilterPredicate to null. 
As a result, it is thrown an exception. 

Workaround: 
1. Save the default filter predicate before applying the custom filtering 
2. Clear filter descriptors and set the FilterPredicate property to stored default filter predicate

In the attachments can be found a sample application demonstrating the issue and the workaround 
Completed
Last Updated: 29 Sep 2016 14:33 by ADMIN
To reproduce:
- Add a lot of nodes to the tree (scrollbars must appear).
- Use the following code to add nodes:
public RadForm1()
{
    InitializeComponent();
    radTreeView1.AllowEdit = true;
    RadContextMenu menu = new RadContextMenu();
    RadMenuItem add = new RadMenuItem();
    add.Click += add_Click;
    add.Text = "add";
    menu.Items.Add(add);
    radTreeView1.RadContextMenu = menu;

}
void add_Click(object sender, EventArgs e)
{
    RadTreeNode node = radTreeView1.SelectedNode;

    var newNode = node.Nodes.Add("new node");
    node.Expanded = true;
    radTreeView1.SelectedNode = newNode;
    radTreeView1.BeginEdit();
}
- Add a node and scroll

Workaround:
public RadForm1()
{
    InitializeComponent();
    radTreeView1.TreeViewElement.VScrollBar.Scroll += VScrollBar_Scroll;
    radTreeView1.MouseWheel += TreeViewElement_MouseWheel;
}

void TreeViewElement_MouseWheel(object sender, MouseEventArgs e)
{
    var radTreeView = sender as RadTreeView;
    if (radTreeView.IsEditing)
    {
        radTreeView.EndEdit();
    }
}

void VScrollBar_Scroll(object sender, ScrollEventArgs e)
{
    var radTreeView = (sender as RadScrollBarElement).ElementTree.Control as RadTreeView;
    if (radTreeView.IsEditing)
    {
        radTreeView.EndEdit();
    }
}

Unplanned
Last Updated: 16 Sep 2016 14:22 by ADMIN
Workaround:

raise a flag before the delete operation and cancel the SelectedNodeChanging event
Completed
Last Updated: 07 Sep 2016 15:12 by ADMIN
Start dragging a node and scroll using the mouse wheel. While scrolling, drop the node. 
Completed
Last Updated: 22 Aug 2016 14:23 by ADMIN
ADMIN
Created by: Dess | Tech Support Engineer, Principal
Comments: 0
Category: TreeView
Type: Bug Report
0
Please refer to the attached sample project and follow the steps: 

If you execute my code sample and try this sequence, you will see my problem:
1- start the application
2- select "test1" on the grid => you see "fonction XX of test1" in the treeview (that's correct)
3- select "test2" on the grid => you see "fonction XX of test2" in the treeview (that's correct)
4- expand all nodes in the treeview
5- uncheck "fonction 31 of test2" in the treeview
6- select "test1" on the grid => you have the error message. On the grid, we have "test1" selected and on the treeview we have "test2".
Note that the problem appears only when checking a node in the treeview on a second level. If you follow this procedure, you will have no problem :
1- restart the application
2- select "test1" on the grid => you see "fonction XX of test1" in the treeview (that's correct)
3- select "test2" on the grid => you see "fonction XX of test2" in the treeview (that's correct)
4- uncheck "fonction 30 of test2" in the treeview
5- select "test1" on the grid => you will have no error. On the grid, we have "test1" selected and on the treeview we have "test1".
6- select "test2" on the grid => you will have no error. On the grid, we have "test2" selected and on the treeview we have "test2" with "fonction 30 of test2" unchecked.

Workaround: in order to synchronize the current row in RadGridView is to change the RadTreeView.DataSource in the RadGridView.CurrentRowChanged event.
Completed
Last Updated: 11 Aug 2016 09:35 by ADMIN
Please refer to the attached gif file.

Workaround: set the Enabled property to false at run time.
Completed
Last Updated: 29 Jun 2016 06:49 by ADMIN
Workaround: create a custom TreeNodeContentElement and override the Synchronize method

public class MyTreeNodeContentElement : TreeNodeContentElement
{
    protected override Type ThemeEffectiveType
    {
        get
        {
            return typeof(TreeNodeContentElement);
        }
    }

    public override void Synchronize()
    {
        TreeNodeElement treeNodeElement = NodeElement;

        if (treeNodeElement == null || treeNodeElement.Data == null || treeNodeElement.Data.TreeViewElement == null || treeNodeElement.Data.Text == null)
        {
            return;
        }

        this.Text = treeNodeElement.Data.Text;
    }

}

public class MyTreeNodeElement : TreeNodeElement
{
    protected override TreeNodeContentElement CreateContentElement()
    {
        return new MyTreeNodeContentElement();
    }

    protected override Type ThemeEffectiveType
    {
        get
        {
            return typeof(TreeNodeElement);
        }
    }
}

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();

        this.radTreeView1.AllowEdit = true;

        this.radTreeView1.DisplayMember = "name";
        this.radTreeView1.ParentMember = "pid";
        this.radTreeView1.ChildMember = "id";
        this.radTreeView1.DataSource = this.GetSampleData();

        this.radTreeView1.CreateNodeElement += radTreeView1_CreateNodeElement;
        this.radTreeView1.ValueChanged += radTreeView1_ValueChanged;
    }

    private void radTreeView1_CreateNodeElement(object sender, Telerik.WinControls.UI.CreateTreeNodeElementEventArgs e)
    {
        e.NodeElement = new MyTreeNodeElement();
    }

    private void radTreeView1_ValueChanged(object sender, Telerik.WinControls.UI.TreeNodeValueChangedEventArgs e)
    {
       this.UpdateDb();
    }

    private void UpdateDb()
    {
        this.radTreeView1.DataSource = null;
        DataTable dt = this.GetSampleData();
        this.radTreeView1.DataSource = dt;
    }

    private DataTable GetSampleData()
        {
            DataTable dt = new DataTable();

            DataColumn dc = new DataColumn();
            dc.ColumnName = "id";
            dc.DataType = typeof(int);
            dt.Columns.Add(dc);

            DataColumn dc1 = new DataColumn();
            dc1.ColumnName = "name";
            dc1.DataType = typeof(string);
            dt.Columns.Add(dc1);

            DataColumn dc2 = new DataColumn();
            dc2.ColumnName = "pid";
            dc2.DataType = typeof(int);
            dt.Columns.Add(dc2);

            DataRow dr = dt.NewRow();
            dr[0] = 0;
            dr[1] = "My Computer";
            dr[2] = DBNull.Value;
            dt.Rows.Add(dr);

            dr = dt.NewRow();
            dr[0] = 1;
            dr[1] = @"C:\";
            dr[2] = 0;
            dt.Rows.Add(dr);

            dr = dt.NewRow();
            dr[0] = 2;
            dr[1] = @"D:\";
            dr[2] = 0;
            dt.Rows.Add(dr);

            dr = dt.NewRow();
            dr[0] = 3;
            dr[1] = "Program Files";
            dr[2] = 1;
            dt.Rows.Add(dr);

            dr = dt.NewRow();
            dr[0] = 4;
            dr[1] = "Microsoft";
            dr[2] = 3;
            dt.Rows.Add(dr);

            dr = dt.NewRow();
            dr[0] = 5;
            dr[1] = "Telerik";
            dr[2] = 3;
            dt.Rows.Add(dr);

            dr = dt.NewRow();
            dr[0] = 6;
            dr[1] = "WINDOWS";
            dr[2] = 1;
            dt.Rows.Add(dr);

            return dt;
        }
}

Completed
Last Updated: 10 Jun 2016 07:27 by ADMIN
ADMIN
Created by: Dess | Tech Support Engineer, Principal
Comments: 0
Category: TreeView
Type: Bug Report
0
To reproduce: select a node and click the button. Note: it may be necessary to perform this several times.

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    private List<DataObject> GetDataList()
    {
        var ret = new List<DataObject>();

        ret.Add(new DataObject() { Node = "A", Parent = null });
        ret.Add(new DataObject() { Node = "B", Parent = "A" });
        ret.Add(new DataObject() { Node = "C", Parent = "B" });
        ret.Add(new DataObject() { Node = "D", Parent = "B" });

        return ret;
    }
    
    private void button1_Click(object sender, EventArgs e)
    {
        radTreeView1.Nodes.Clear(); 
        radTreeView1.DisplayMember = "Node";
        radTreeView1.ChildMember = "Node";
        radTreeView1.ParentMember = "Parent";
        radTreeView1.DataSource = GetDataList();
        radTreeView1.ExpandAll();
    }
}

public class DataObject
{
    public string Node { get; set; }

    public string Parent { get; set; }
}

Workaround: instead of clearing the nodes, set the DataSource property to null.
Unplanned
Last Updated: 06 Jun 2016 10:19 by ADMIN
Use the attached project to reproduce.
- Check on of the nodes and then press Alt +T (do not move the mouse away from the node)

Workaround:
Set transparent fill and border to the TreeNodeElement disabled state in Visual Style Builder.