Hi,
I am using RadTreeView with server side load on demand. The issue I am having is I don't want the '+' sign to be displayed for a node if it doesn't have a child node. How can I achieve this with server side load on demand. Below is the code I am using to create root and child nodes.
ASPX code:
<telerik:RadTreeView runat="server" ID="RadTreeView1" OnNodeExpand="RadTreeView1_NodeExpand" >
<ContextMenus>
<telerik:RadTreeViewContextMenu ID="CM" runat="server">
<Items>
<telerik:RadMenuItem Value="CreateSibling" Text="Create Sibling">
</telerik:RadMenuItem>
<telerik:RadMenuItem Value="CreateChild" Text="Create Child">
</telerik:RadMenuItem>
</Items>
</telerik:RadTreeViewContextMenu>
<telerik:RadTreeViewContextMenu ID="EmptyCM" runat="server">
</telerik:RadTreeViewContextMenu>
</ContextMenus>
</telerik:RadTreeView>
c# code:
protected void Page_Load(object sender, EventArgs e)
{
try
{
if (!Page.IsPostBack)
{
LoadRootNodes(RadTreeView1, TreeNodeExpandMode.ServerSide);
}
}
catch (Exception ex)
{
RadAjaxManager1.Alert(ex.ToString());
}
}
private static void LoadRootNodes(RadTreeView treeView, TreeNodeExpandMode expandMode)
{
DataTable data = GetData(new SqlCommand("select Description,ID from Table1"));
foreach (DataRow row in data.Rows)
{
RadTreeNode rootnode = new RadTreeNode();
rootnode.Text = row["Description"].ToString();
rootnode.Value = row["ID"].ToString();
rootnode.ContextMenuID = "CM";
rootnode.ExpandMode = expandMode;
treeView.Nodes.Add(rootnode);
}
}
protected void RadTreeView1_NodeExpand(object sender,RadTreeNodeEventArgs e)
{
if (e.Node.Nodes.Count == 0)
PopulateNodeOnDemand(e, TreeNodeExpandMode.ServerSide);
}
private static void PopulateNodeOnDemand(RadTreeNodeEventArgs e, TreeNodeExpandMode expandMode)
{
DataTable data = GetChildNodes(e.Node.Value,e.Node.ContextMenuID);
foreach (DataRow row in data.Rows)
{
RadTreeNode childnode = new RadTreeNode();
childnode.Text = row["Description"].ToString();
childnode.Value = row["ID"].ToString();
if (!(childnode.Value == e.Node.Value))
{
e.Node.Nodes.Add(childnode);
childnode.ExpandMode = expandMode;
}
childnode.ContextMenuID = "CM";
}
if (e.Node.Nodes.Count > 0)
{
e.Node.Expanded = true;
}
else
{
e.Node.ExpandMode = TreeNodeExpandMode.ClientSide;
//e.Node.Expanded = false;
}
}
I am using RadTreeView with server side load on demand. The issue I am having is I don't want the '+' sign to be displayed for a node if it doesn't have a child node. How can I achieve this with server side load on demand. Below is the code I am using to create root and child nodes.
ASPX code:
<telerik:RadTreeView runat="server" ID="RadTreeView1" OnNodeExpand="RadTreeView1_NodeExpand" >
<ContextMenus>
<telerik:RadTreeViewContextMenu ID="CM" runat="server">
<Items>
<telerik:RadMenuItem Value="CreateSibling" Text="Create Sibling">
</telerik:RadMenuItem>
<telerik:RadMenuItem Value="CreateChild" Text="Create Child">
</telerik:RadMenuItem>
</Items>
</telerik:RadTreeViewContextMenu>
<telerik:RadTreeViewContextMenu ID="EmptyCM" runat="server">
</telerik:RadTreeViewContextMenu>
</ContextMenus>
</telerik:RadTreeView>
c# code:
protected void Page_Load(object sender, EventArgs e)
{
try
{
if (!Page.IsPostBack)
{
LoadRootNodes(RadTreeView1, TreeNodeExpandMode.ServerSide);
}
}
catch (Exception ex)
{
RadAjaxManager1.Alert(ex.ToString());
}
}
private static void LoadRootNodes(RadTreeView treeView, TreeNodeExpandMode expandMode)
{
DataTable data = GetData(new SqlCommand("select Description,ID from Table1"));
foreach (DataRow row in data.Rows)
{
RadTreeNode rootnode = new RadTreeNode();
rootnode.Text = row["Description"].ToString();
rootnode.Value = row["ID"].ToString();
rootnode.ContextMenuID = "CM";
rootnode.ExpandMode = expandMode;
treeView.Nodes.Add(rootnode);
}
}
protected void RadTreeView1_NodeExpand(object sender,RadTreeNodeEventArgs e)
{
if (e.Node.Nodes.Count == 0)
PopulateNodeOnDemand(e, TreeNodeExpandMode.ServerSide);
}
private static void PopulateNodeOnDemand(RadTreeNodeEventArgs e, TreeNodeExpandMode expandMode)
{
DataTable data = GetChildNodes(e.Node.Value,e.Node.ContextMenuID);
foreach (DataRow row in data.Rows)
{
RadTreeNode childnode = new RadTreeNode();
childnode.Text = row["Description"].ToString();
childnode.Value = row["ID"].ToString();
if (!(childnode.Value == e.Node.Value))
{
e.Node.Nodes.Add(childnode);
childnode.ExpandMode = expandMode;
}
childnode.ContextMenuID = "CM";
}
if (e.Node.Nodes.Count > 0)
{
e.Node.Expanded = true;
}
else
{
e.Node.ExpandMode = TreeNodeExpandMode.ClientSide;
//e.Node.Expanded = false;
}
}