Hi,
I have a dynamic treeview which is created in page_load. and I want to make it load on demand. here is my code.
And here is aspx code
but after click the node to expand it, it gives empty nodes like attached image.
Could you please take a look at it?
Thank you very much.
Bill
I have a dynamic treeview which is created in page_load. and I want to make it load on demand. here is my code.
using
System;
using
System.Collections.Generic;
using
System.Web;
using
System.Web.UI;
using
System.Web.UI.WebControls;
using
Telerik.Web.UI;
using
System.Linq;
namespace
TreeViewTest
{
public
partial
class
_Default : System.Web.UI.Page
{
protected
void
Page_Load(
object
sender, EventArgs e)
{
RadTreeView treeView =
new
RadTreeView();
if
(!IsPostBack)
{
var treeViewDataList = GetDB().Where(c => c.ParentId ==
null
);
foreach
(var treeviewItem
in
treeViewDataList)
{
RadTreeNode node =
new
RadTreeNode();
node.Text = treeviewItem.Name;
node.Value = treeviewItem.Id.ToString();
node.ExpandMode = TreeNodeExpandMode.ServerSide;
treeView.Nodes.Add(node);
}
}
treeView.NodeExpand += (s, arg) =>
{
if
(arg.Node.Nodes.Count == 0)
{
//string pId = "-1";
var treeViewDataList = GetDB().Where(c => c.ParentId.ToString() == arg.Node.Value);
foreach
(var treeviewItem
in
treeViewDataList)
{
RadTreeNode node =
new
RadTreeNode();
node.Text = treeviewItem.Name;
node.Value = treeviewItem.Id.ToString();
node.ExpandMode = TreeNodeExpandMode.ServerSide;
arg.Node.Nodes.Add(node);
}
arg.Node.Expanded =
true
;
}
};
this
.form1.Controls.Add(treeView);
}
public
List<TreeViewItem> GetDB()
{
List<TreeViewItem> list =
new
List<TreeViewItem>();
list.Add(
new
TreeViewItem { Id=1, Name=
"A"
, ParentId=
null
});
list.Add(
new
TreeViewItem { Id = 2, Name =
"B"
, ParentId =
null
});
list.Add(
new
TreeViewItem { Id = 3, Name =
"C"
, ParentId =
null
});
list.Add(
new
TreeViewItem { Id = 4, Name =
"A-01"
, ParentId = 1 });
list.Add(
new
TreeViewItem { Id = 5, Name =
"A-02"
, ParentId = 1 });
list.Add(
new
TreeViewItem { Id = 6, Name =
"B-01"
, ParentId = 2 });
return
list;
}
}
public
class
TreeViewItem
{
public
int
Id {
get
;
set
; }
public
string
Name {
get
;
set
; }
public
int
? ParentId {
get
;
set
; }
}
}
And here is aspx code
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="TreeViewTest._Default" %>
<%@ Register Assembly="Telerik.Web.UI" Namespace="Telerik.Web.UI" TagPrefix="telerik" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<
html
xmlns
=
"http://www.w3.org/1999/xhtml"
>
<
head
runat
=
"server"
>
<
title
></
title
>
</
head
>
<
body
>
<
form
id
=
"form1"
runat
=
"server"
>
<
telerik:RadScriptManager
ID
=
"RadScriptManager1"
runat
=
"server"
></
telerik:RadScriptManager
>
<
div
>
</
div
>
</
form
>
</
body
>
</
html
>
but after click the node to expand it, it gives empty nodes like attached image.
Could you please take a look at it?
Thank you very much.
Bill