RadTreeView for ASP.NET

How to add and edit templates Runtime Send comments on this topic.
See Also
Templates > How to add and edit templates Runtime

Glossary Item Box

 

Dynamic templates are applied only to TreeNodes that are added dynamically.


Consider the following scenario. Suppose, you want to define a label template that will be applied to all tree nodes. The label will have the font size preset and will inherit the values for text from the tree nodes. Also, the load-on-demand feature is turned on.

The end result will be:

  


You can achieve this using the code below:

Example:

ASPX Copy Code
<rad:radtreeview id="RadTreeView1" runat="server"></rad:radtreeview>
        
C# Copy Code
protected void Page_Load(object sender, EventArgs e)
{

   
if(!Page.IsPostBack)
   {
       RadTreeNode node =
new RadTreeNode("Root");
       node.ExpandMode = ExpandMode.ServerSideCallBack;
       RadTreeView1.Nodes.Add(node);
       RadTreeView1.NodeExpand +=
new RadTreeView.RadTreeViewEventHandler(RadTreeView1_NodeExpand);
   }
}
protected override void OnInit(EventArgs e)
   {
       RadTreeView1.NodeTemplate =
new LabelTemplate();
       
base.OnInit(e);
   }

void RadTreeView1_NodeExpand(object o, RadTreeNodeEventArgs e)
{
   e.NodeClicked.Nodes.Add(
new RadTreeNode("Child"));
}
class LabelTemplate : ITemplate
{
   
public void InstantiateIn(Control container)
   {
       Label label1 =
new Label();
       label1.ID =
"ItemLabel";
       label1.Font.Size = 15;
       label1.DataBinding +=
new EventHandler(label1_DataBinding);
       container.Controls.Add(label1);
   }

   
private void label1_DataBinding(object sender, EventArgs e)
   {
       Label target = (Label)sender;
       RadTreeNode node = (RadTreeNode)target.BindingContainer;
       
string nodeText = (string)DataBinder.Eval(node, "Text");
       target.Text = nodeText;
   }
}
        
VB.NET Copy Code
Protected Sub Page_Load(sender As Object, e As EventArgs)
   RadTreeView1.NodeTemplate = New LabelTemplate()

   If Not Page.IsPostBack Then
      Dim node As New RadTreeNode("Root")
      node.ExpandMode = ExpandMode.ServerSideCallBack
      RadTreeView1.Nodes.Add(node)
      AddHandler RadTreeView1.NodeExpand, AddressOf RadTreeView1_NodeExpand
   End If
End Sub 'Page_Load


Sub RadTreeView1_NodeExpand(o As Object, e As RadTreeNodeEventArgs)
   e.NodeClicked.Nodes.Add(New RadTreeNode("Child"))
End Sub 'RadTreeView1_NodeExpand

Class LabelTemplate
   Implements ITemplate 'ToDo: Add Implements Clauses for implementation methods of these interface(s)

   Public Sub InstantiateIn(container As Control)
      Dim label1 As New Label()
      label1.ID = "ItemLabel"
      label1.Font.Size = 15
      AddHandler label1.DataBinding, AddressOf label1_DataBinding
      container.Controls.Add(label1)
   End Sub 'InstantiateIn


   Private Sub label1_DataBinding(sender As Object, e As EventArgs)
      Dim target As Label = CType(sender, Label)
      Dim node As RadTreeNode = CType(target.BindingContainer, RadTreeNode)
      Dim nodeText As String = CStr(DataBinder.Eval(node, "Text"))
      target.Text = nodeText
   End Sub 'label1_DataBinding
End Class 'LabelTemplate

See Also