 |
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
Sub RadTreeView1_NodeExpand(o As Object, e As RadTreeNodeEventArgs) e.NodeClicked.Nodes.Add(New RadTreeNode("Child")) End Sub
Class LabelTemplate Implements ITemplate
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
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 End Class
|
See Also