6 Answers, 1 is accepted
0
Richard Slade
Top achievements
Rank 2
answered on 08 Feb 2011, 04:01 PM
Hello,
I'll see if I can put something together for you. Do you prefer C# or VB?
Richard
I'll see if I can put something together for you. Do you prefer C# or VB?
Richard
0
Patrick
Top achievements
Rank 1
answered on 08 Feb 2011, 04:32 PM
Richard, I would appreciate it very much, I have spent multiple hours trying to figure out the problem I am having and having no luck, C# would be preferred. I can bind the TreeView to the BindingList but when I make updates to the nodes parents/text the Treeview does not update.
Thanks again!
Thanks again!
0
Richard Slade
Top achievements
Rank 2
answered on 08 Feb 2011, 05:09 PM
Hi Patrick,
Firstly, have a look at this forum link as I think it may answer your question. If this does, then the new RadTreeView will be released as part of Q1 2011 which is due out mid-March.
Let me know if that helps
Richard
Firstly, have a look at this forum link as I think it may answer your question. If this does, then the new RadTreeView will be released as part of Q1 2011 which is due out mid-March.
Let me know if that helps
Richard
0
Patrick
Top achievements
Rank 1
answered on 08 Feb 2011, 06:43 PM
Richard, I did take a look at that forum post the other day, and I am doing what is written on that post as far as databinding the TreeView to a BindingList, the TreeView is loaded with the correct data, but my problem comes in when I want to update a particular node. If I want to change the parent of a particular node, the treeview does not automatically update. What I am doing for now as a work-around is setting the datasource of the treeview to NULL then rebinding the control to the BindingList. I will try to create a sample project that demostrates this behavior this evening.
0
Richard Slade
Top achievements
Rank 2
answered on 08 Feb 2011, 08:03 PM
Hello Patrick,
Yes, to my knowledge this is what you will need to do for the moment until the Q1 2011 release is ready. If I can do anything to help in the meantime though, do let me know
Richard
Yes, to my knowledge this is what you will need to do for the moment until the Q1 2011 release is ready. If I can do anything to help in the meantime though, do let me know
Richard
0
Accepted
Richard Slade
Top achievements
Rank 2
answered on 08 Feb 2011, 08:21 PM
Hi Patrick,
BindingSource.ResetBindings() also has the desired effect.
Designer File
Form1.cs
Hope that helps
Richard
BindingSource.ResetBindings() also has the desired effect.
Designer File
namespace
RadTreeView_C
{
partial
class
Form1
{
/// <summary>
/// Required designer variable.
/// </summary>
private
System.ComponentModel.IContainer components =
null
;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected
override
void
Dispose(
bool
disposing)
{
if
(disposing && (components !=
null
))
{
components.Dispose();
}
base
.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private
void
InitializeComponent()
{
this
.radButton1 =
new
Telerik.WinControls.UI.RadButton();
this
.radTreeView1 =
new
Telerik.WinControls.UI.RadTreeView();
((System.ComponentModel.ISupportInitialize)(
this
.radButton1)).BeginInit();
((System.ComponentModel.ISupportInitialize)(
this
)).BeginInit();
((System.ComponentModel.ISupportInitialize)(
this
.radTreeView1)).BeginInit();
this
.SuspendLayout();
//
// radButton1
//
this
.radButton1.Location =
new
System.Drawing.Point(244, 276);
this
.radButton1.Name =
"radButton1"
;
this
.radButton1.Size =
new
System.Drawing.Size(130, 24);
this
.radButton1.TabIndex = 1;
this
.radButton1.Text =
"radButton1"
;
this
.radButton1.Click +=
new
System.EventHandler(
this
.radButton1_Click);
//
// Form1
//
this
.AutoScaleDimensions =
new
System.Drawing.SizeF(6F, 13F);
this
.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this
.BackColor = System.Drawing.Color.DarkGray;
this
.ClientSize =
new
System.Drawing.Size(386, 319);
//
// radTreeView1
//
this
.radTreeView1.BackColor = System.Drawing.SystemColors.Window;
this
.radTreeView1.Cursor = System.Windows.Forms.Cursors.Default;
this
.radTreeView1.Font =
new
System.Drawing.Font(
"Segoe UI"
, 8.25F);
this
.radTreeView1.ForeColor = System.Drawing.Color.Black;
this
.radTreeView1.Location =
new
System.Drawing.Point(12, 12);
this
.radTreeView1.Name =
"radTreeView1"
;
this
.radTreeView1.RightToLeft = System.Windows.Forms.RightToLeft.No;
//
//
//
this
.radTreeView1.RootElement.ForeColor = System.Drawing.Color.Black;
this
.radTreeView1.Size =
new
System.Drawing.Size(362, 250);
this
.radTreeView1.TabIndex = 0;
this
.radTreeView1.Text =
"radTreeView1"
;
this
.Controls.Add(
this
.radButton1);
this
.Controls.Add(
this
.radTreeView1);
this
.MinimizeBox =
false
;
this
.Name =
"Form1"
;
//
//
//
this
.RootElement.ApplyShapeToControl =
true
;
this
.Text =
"Form1"
;
this
.ThemeName =
"Windows7"
;
((System.ComponentModel.ISupportInitialize)(
this
.radButton1)).EndInit();
((System.ComponentModel.ISupportInitialize)(
this
.radTreeView1)).EndInit();
((System.ComponentModel.ISupportInitialize)(
this
)).EndInit();
this
.ResumeLayout(
false
);
}
#endregion
private
Telerik.WinControls.UI.RadTreeView radTreeView1;
private
Telerik.WinControls.UI.RadButton radButton1;
}
}
Form1.cs
using
System;
using
System.Collections.Generic;
using
System.ComponentModel;
using
System.Data;
using
System.Drawing;
using
System.Linq;
using
System.Text;
using
System.Windows.Forms;
using
Telerik.WinControls.UI;
using
System.Collections.ObjectModel;
using
System.Runtime.InteropServices;
namespace
RadTreeView_C
{
public
partial
class
Form1 : RadForm
{
BindingList<Person> people;
public
Form1()
{
InitializeComponent();
this
.people =
new
BindingList<Person>();
this
.people.Add(
new
Person(1, 0,
"Peter"
));
this
.people.Add(
new
Person(2, 0,
"Stefan"
));
this
.people.Add(
new
Person(3, 1,
"John"
));
this
.people.Add(
new
Person(4, 2,
"James"
));
this
.people.Add(
new
Person(5, 4,
"Ivan"
));
this
.radTreeView1.DataSource =
this
.people;
this
.radTreeView1.ValueMember =
"Id"
;
this
.radTreeView1.DisplayMember =
"Name"
;
this
.radTreeView1.ParentIDMember =
"ParentId"
;
this
.radTreeView1.AllowEdit =
true
;
this
.radTreeView1.AllowDefaultContextMenu =
true
;
this
.radTreeView1.ExpandAll();
}
private
void
Form1_Load(
object
sender, EventArgs e)
{
}
private
void
radButton1_Click(
object
sender, EventArgs e)
{
Person john = (Person)
this
.radTreeView1.Nodes[0].Nodes[0].DataBoundItem;
john.ParentId = 2;
// move john to under stefan
people.ResetBindings();
this
.radTreeView1.ExpandAll();
}
}
public
class
Person
{
string
name;
int
id;
int
parentId;
public
Person()
{
}
public
Person(
int
id,
int
parentId,
string
name)
{
this
.id = id;
this
.parentId = parentId;
this
.name = name;
}
public
string
Name
{
get
{
return
name; }
set
{ name = value; }
}
public
int
Id
{
get
{
return
id; }
set
{ id = value; }
}
public
int
ParentId
{
get
{
return
parentId; }
set
{ parentId = value; }
}
}
}
Hope that helps
Richard