Hi all,
RadTreeView is very nice control , For treeline we can give line style, color but we can't set line thickness,
I want to change thickness of Treeline can you guide me how to do it?
At the moment the filter predicate is called only for the root nodes. A possible workaround is to recursively apply the filter logic for the child nodes as well. Workaround: private void Button1_Click(object sender, EventArgs e) { this.radTreeView1.TreeViewElement.FilterPredicate = this.FilterNode; this.radTreeView1.Filter = "Custom"; } private bool FilterNode(RadTreeNode node) { Console.WriteLine(node.Text); if (node.Text.Contains("Child: 3")) { return true; } Stack<RadTreeNode> children = new Stack<RadTreeNode>(); if (node.Nodes.Count > 0) { children.Push(node); while (children.Count > 0) { RadTreeNode current = children.Pop(); foreach (RadTreeNode child in current.Nodes) { if (child.Text.Contains("Child: 3")) { return true; } children.Push(child); } } } return false; }
Workaround: class CustomTreeView : RadTreeView { //Replace the default element with the custom one protected override RadTreeViewElement CreateTreeViewElement() { return new CustomTreeViewElement(); } //Enable theming for the control public override string ThemeClassName { get { return typeof(RadTreeView).FullName; } } } class CustomTreeViewElement : RadTreeViewElement { //Enable themeing for the element protected override Type ThemeEffectiveType { get { return typeof(RadTreeViewElement); } } protected override bool ProcessContextMenu(Point location) { RadTreeNode node = this.GetNodeAt(location); if (node == null) { RadContextMenu menu = new RadContextMenu(); RadMenuItem item = new RadMenuItem(); item.Text = "Add a root node"; menu.Items.Add(item); item.Click += item_Click; TreeViewContextMenuOpeningEventArgs args = new TreeViewContextMenuOpeningEventArgs(node, menu); OnContextMenuOpening(args); if (!args.Cancel) { menu.Show(this.ElementTree.Control, location); return true; } } return base.ProcessContextMenu(location); } private void item_Click(object sender, EventArgs e) { this.Nodes.Add(new RadTreeNode("New root")); } }
Currently we do not support binding to the ToggleState.Indeterminate state automatically because it would require a change in the behavior of the Checked property. If you use the CheckedMember, the ToggleState.Indeterminate state is represent like ToggleState.On. Workaround: Subscribe to the NodeFormatting and NodeCheckedChanged events: void radTreeView1_NodeFormatting(object sender, Telerik.WinControls.UI.TreeNodeFormattingEventArgs e) { Child child = e.Node.DataBoundItem as Child; if (child != null) { e.Node.CheckState = child.Status; } } void radTreeView1_NodeCheckedChanged(object sender, Telerik.WinControls.UI.TreeNodeCheckedEventArgs e) { Child child = e.Node.DataBoundItem as Child; if (child != null) { child.Status = e.Node.CheckState; } }
Similar functionality like in KendoUI or WPF
Add e.Action in SelectedNodeChanging similar to the one in the standard TreeView.BeforeSelect event which indicates what caused the event - mouse click, key pressed, or other
I can type to select a node. For example, if I click to select the Car node, then type "V", selection jumps to the "Van" node. I can right-arrow to expand, then type "U" to select the "Useful" node. Resolution: Added two new properties: KeyboardSearchEnabled and KeyboardSearchResetInterval. When set the KeyboardSearchEnabled property to true, user can navigate to an item by typing when RadTreeView is focused. You can set how long the user must wait before searching with the keyboard is reset using the KeyboardSearchResetInterval property.
Improve the drag and drop indicators by giving more clean user friendly design and positioning.
When using TriStateMode with AutoCheckChildNodes, there is no way to determine whether the events are raised by a user action or by programatically checking a node. view: CheckedMode enumeration for details
ADD. RadTreeView - add support for binding the checkboxes of the nodes to a field in the data
ADD. RadTreeView - add NodeRemoving event
So is there an event triggered for added nodes when using a datasource? I want to set the checked state based on a property on the databound item. Basically this: I have a treeview set like this in Q1 2012: treeViewProjets.DataSource = ViewModel.Projets; treeViewProjets.DisplayMember = @"Nom\Nom"; treeViewProjets.ValueMember = @"Id\Id"; treeViewProjets.ChildMember = @"Projets\ObjetsProjet"; treeViewProjets.NodeAdded += new RadTreeView.RadTreeViewEventHandler(treeViewProjets_NodeAdded); treeViewProjets.NodeAdding += new RadTreeView.RadTreeViewCancelEventHandler(treeViewProjets_NodeAdding); treeViewProjets.NodeFormatting += new TreeNodeFormattingEventHandler(treeViewProjets_NodeFormatting); I get a root node and many child nodes created, but the events NodeAdded and NodeAdding are never triggered, NodeFormatting triggers fine.
ADD. RadTreeView - when pressing a letter from the keyboard, the node starting with this letter should be selected. Resolution: Added two new properties: KeyboardSearchEnabled and KeyboardSearchResetInterval. When set the KeyboardSearchEnabled property to true, user can navigate to an item by typing when RadTreeView is focused. You can set how long the user must wait before searching with the keyboard is reset using the KeyboardSearchResetInterval property.
When you clear the child nodes of any node, the RadTreeView is scrolling to its initial position.
Add a possibility to set the auto-expand delay on drag-drop in RadTreeView.
Improve the TreeViewDragDropService extensibility by allowing replacing the default remove behavior with copy behavior.
There should be a convenient way to hide the expander icon and to show lines when using full lazy mode.