RadTreeView paired with a RadGrid check list

My intuition for building the functionality below is to use a CheckBoxList or the RadCheckBoxList, but the events that I need really aren't there. Much easier to use a RadGrid with a check box column. The code below is a working example

 

<%@ Page Title="" Language="VB" MasterPageFile="~/MasterPage.master" AutoEventWireup="false" CodeFile="ObjectList2.aspx.vb" Inherits="admin_ObjectList2" %>
 
<asp:Content ID="Content1" ContentPlaceHolderID="header" Runat="Server">
  </asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
 
 
<telerik:RadAjaxPanel ID="RadAjaxPanel1" runat="server" LoadingPanelID="RadAjaxLoadingPanel1">
<div style="text-align:left; ">
    <span class="title1" style="padding-left:10px" ><asp:Label runat="server" ID="lblTitle"></asp:Label></span>
    <table>
        <tr>
            <td style="vertical-align:top; width:300px">
                <telerik:RadTreeView RenderMode="Lightweight" ID="RadTreeView1" runat="server" >
                    <DataBindings>
                        <telerik:RadTreeNodeBinding Expanded="true"></telerik:RadTreeNodeBinding>
                    </DataBindings>
                </telerik:RadTreeView>
            </td>
            <td style="vertical-align:top">
                <telerik:RadGrid ID="RadGrid1" runat="server" AutoGenerateColumns="False" CssClass="grid" RenderMode="Lightweight"
                    AllowPaging="false" PageSize="300" Width="300px">
                    <MasterTableView DataKeyNames="intGroupID, intObjectID"  ShowFooter="false" >
                        <Columns>
                            <telerik:GridTemplateColumn>
                                <ItemTemplate>
                                    <telerik:RadCheckBox runat="server" ID="chkChecked" Checked='<%# DataBinder.Eval(Container.DataItem, "Checked", "")%>'></telerik:RadCheckBox>
                                </ItemTemplate>
                            </telerik:GridTemplateColumn>
                            <telerik:GridBoundColumn DataField="vchrGroupName" HeaderText="Group Name"></telerik:GridBoundColumn>
                        </Columns>
                    </MasterTableView>
                </telerik:RadGrid>
            </td>
        </tr>
    </table>
 
</div>
 
</telerik:RadAjaxPanel>
</asp:Content>
Imports System.Data
Imports Telerik.Web.UI
 
Partial Class admin_ObjectList2
    Inherits InheritedPage
 
    Private Sub admin_ObjectList2_Load(sender As Object, e As EventArgs) Handles Me.Load
        If Not IsPostBack Then
            BindTree()
        End If
    End Sub
 
    Sub BindTree()
        RadTreeView1.DataTextField = "vchrDisplayName"
        RadTreeView1.DataValueField = "intObjectID"
        RadTreeView1.DataFieldParentID = "Parent"
        RadTreeView1.DataFieldID = "intObjectID"
 
        RadTreeView1.DataSource = DynData.SPs.sp_4P_masterObject_SEL3(CInt(Session("objectType")), App.ConnectionString).getTable
        RadTreeView1.DataBind()
    End Sub
 
    Private Sub RadTreeView1_NodeClick(sender As Object, e As RadTreeNodeEventArgs) Handles RadTreeView1.NodeClick
        Session("ObjectID") = e.Node.Value
        RadGrid1.Rebind()
    End Sub
 
    Private Sub RadGrid1_NeedDataSource(sender As Object, e As GridNeedDataSourceEventArgs) Handles RadGrid1.NeedDataSource
        Me.RadGrid1.DataSource = DynData.SPs.sp_4P_masterObject_SEL_groups(CInt(Session("ObjectID")), App.ConnectionString).getTable
    End Sub
 
    Private Sub RadGrid1_ItemCommand(sender As Object, e As GridCommandEventArgs) Handles RadGrid1.ItemCommand
        If TypeOf e.Item Is GridDataItem Then
            Dim intGroupID As Int16 = RadGrid1.MasterTableView.DataKeyValues(e.Item.ItemIndex)("intGroupID")
            Dim intObjectID As Int16 = RadGrid1.MasterTableView.DataKeyValues(e.Item.ItemIndex)("intObjectID")
            Dim chkChecked As RadCheckBox = CType(e.Item.FindControl("chkChecked"), RadCheckBox)
            DynData.SPs.sp_4P_objectGroup_UPD2(intObjectID, intGroupID, chkChecked.Checked, App.ConnectionString).execute()
 
        End If
    End Sub
End Class
IF EXISTS (SELECT name
       from sysobjects
       WHERE  name = N'sp_4P_masterObject_SEL3'
       AND    type = 'P')
    DROP PROCEDURE sp_4P_masterObject_SEL3
GO
 
CREATE PROCEDURE sp_4P_masterObject_SEL3
--  sp_4P_masterObject_SEL3 1
 
@intType int
 
AS
 
select
        mo.intObjectID,
        mo.vchrDisplayName,
        mo.Parent
    from intranet2..masterObject mo
    where mo.intType = @intType
    ORDER BY 2
GO
 
 
grant exec on sp_4P_masterObject_SEL3 TO public

 

 

 

 

 


RealWorldCode gives developers practical, real‑world solutions with clean, working code — no fluff, no theory, just answers.
Links
Home
Knowledge Areas
Sitemap
Contact
Et cetera
Privacy Policy
Terms and Conditions
Cookie Preferences