Edit this page

Accessing Cells and Items

There are various ways to access the different items of the RadTreeList control.The most important ones are shown below.

Accessing TreeListDataItems and their values

You can access the RadTreeList data items either using the item events of the control(ItemCreated, ItemDataBound, ItemCommand) or by looping through its Items collection when it is available.

//e is the event argument object
if (e.Item is TreeListDataItem)
{
    TreeListDataItem item = e.Item as TreeListDataItem;
}
If TypeOf e.Item Is TreeListDataItem Then
    Dim item As TreeListDataItem = CType(e.Item, TreeListDataItem)
End If
foreach (TreeListDataItem item in RadTreeList1.Items)
{
    //perform some action with the data item
}
For Each item As TreeListDataItem In RadTreeList1.Items
    'perform some action with the data item
Next

Once you get hold of a certain data item, you can access its cells by using the UniqueName property of the column that the cell belongs to.

TableCell cell = dataItem["ColumnUniqueName"]; //where dataItem is an object of type TreeListDataItem
Dim cell As TableCell = dataItem("ColumnUniqueName") 'where dataItem is an object of type TreeListDataItem

With bound columns you can use the Textproperty to get the value of the cell.

string itemValue = cell.Text;
Dim itemValue As String = cell.Text

For values in TreeListTemplateColumns you will need to find thecontrol in the treelist cell (either using the FindControl() method or the Controls collection of the cell) and extract its value.

string title = (dataItem["ColumnUniqueName"].FindControl("Label1") as Label).Text;
Dim title As String = CType(dataItem("ColumnUniqueName").FindControl("Label1"), Label).Text

In case you want to access a checkbox in a TreeListCheckBoxColumn, you will be able to get hold of it through the cell's Controls collection.

CheckBox chk = dataItem["Qualifies"].Controls[0] as CheckBox;
Dim chk As CheckBox = CType(dataItem("Qualifies").Controls(0), CheckBox)

If you need to get hold of the expand/collapse button in the treelist data item you can do so by using FindControl() having in mind that the button id is "ExpandCollapseButton":

if (dataItem.FindControl("ExpandCollapseButton") != null)
{
    Button btn = dataItem.FindControl("ExpandCollapseButton") as Button;
}
If Not dataItem.FindControl("ExpandCollapseButton") Is Nothing Then
    Dim btn As Button = CType(dataItem.FindControl("ExpandCollapseButton"), Button)
End If

Accessing the TreeListHeaderItem

You can use the ItemCreated and ItemDataBound events Of RadTreeListto get hold of the header.

if (e.Item is TreeListHeaderItem)
{
    TreeListHeaderItem header = e.Item as TreeListHeaderItem;
    TableCell headerCell = header["ColumnUniqueName"] as TableCell;
}
If TypeOf e.Item Is TreeListHeaderItem Then
    Dim header As TreeListHeaderItem = TryCast(e.Item, TreeListHeaderItem)

End If

Same as with the TreeListDataItem, you can access the separate cells by using the UniqueName of the column in question.

TableCell headerCell = header["ColumnUniqueName"] as TableCell;
Dim headerCell As TableCell = CType(header("ColumnUniqueName"), TableCell)

Accessing the TreeListPagerItem

You can use the same approach to get hold of the pager as for the header:

if (e.Item is TreeListPagerItem)
{
    TreeListPagerItem pager = e.Item as TreeListPagerItem;
    pager.PagerContentCell.BackColor = System.Drawing.Color.AliceBlue;
}
If TypeOf e.Item Is TreeListPagerItem Then
    Dim pager As TreeListPagerItem = CType(e.Item, TreeListPagerItem)
    pager.PagerContentCell.BackColor = System.Drawing.Color.AliceBlue
End If

Accessing the TreeListDetailTemplateItem

The ItemCreated and ItemDataBound events are the place where youcan access the TreeListDetailTemplateItem as well.

if (e.Item is TreeListDetailTemplateItem)
{
    TreeListDetailTemplateItem detailItem = e.Item as TreeListDetailTemplateItem;
    Label lbl = detailItem.FindControl("Label1") as Label;
}
If TypeOf e.Item Is TreeListDetailTemplateItem Then
    Dim detailItem As TreeListDetailTemplateItem = TryCast(e.Item, TreeListDetailTemplateItem)
End If

After that you can use the FindControl() method to get reference to the controls specified in the template.

Label lbl = detailItem.FindControl("Label1") as Label;
Dim lbl As Label = CType(detailItem.FindControl("Label1"), Label)

Accessing the TreeListNoRecordsItem

You can access the item rendered when the treelist is bound to an empty datasource again the same way:

if (e.Item is TreeListNoRecordsItem)
{
    TreeListNoRecordsItem noRecordsItem = e.Item as TreeListNoRecordsItem;
}
If TypeOf e.Item Is TreeListNoRecordsItem Then
    Dim detailItem As TreeListNoRecordsItem = TryCast(e.Item, TreeListNoRecordsItem)
End If

Finding a TreeListDataItem by Key Value

RadTreeList provides a method to search for an existing item via the data key values of the underlying record. This method supports both key and parent key parameters.

protected void Button1_Click(object sender, EventArgs e)
{
        TreeListDataItem item = RadTreeList1.FindItemByKeyValue("RecordID", 3);
}
Protected Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    Dim item As TreeListDataItem = RadTreeList1.FindItemByKeyValue("RecordID", 3)
End Sub

If no items are found, the method returns null. In case there are multiple records matching the parameters, the method will return only the first item.

See Also