protected DataView dvTree;
protected DataView dvTempView;
protected Stack skNodeCollection = new Stack();
//returns DataTable including ParentFolderID
protected DataTable GetItems(int ParentID)
{
//Code here
}
//This method is used to bind level 1 folders
protected void BindTreeView()
{
DataTable dtTreeNodes = new DataTable();
RadTreeNode ParentNode;
string imageURL = "";
dtTreeNodes = GetItems();
if (dtTreeNodes.Rows.Count > 0)
{
dvTree = new DataView(dtTreeNodes);
dvTempView = dvTree;
dvTempView.RowFilter = "ParentFolderID = 0";
dtTreeNodes = dvTempView.ToTable();
if (dtTreeNodes.Rows.Count > 0)
{
foreach (DataRow myRow in dtTreeNodes.Rows)
{
ParentNode = new RadTreeNode();
ParentNode.Text = myRow["FolderName"].ToString();
ParentNode.Value = myRow["FolderID"].ToString();
ParentNode.ImageUrl = imageURL;
skNodeCollection.Push(myRow["FolderID"]);
rdTree.Nodes.Add(ParentNode);
}
dvTree = dvTempView;
CreateNodes();
}
}
}
//This method is used to bind nodes after level 1
protected void CreateNodes()
{
int FolderID = 0;
DataTable dtTreeNodes;
RadTreeNode ParentNode;
string imageURL = "";
if (skNodeCollection.Count != 0)
{
FolderID = Convert.ToInt32(skNodeCollection.Pop());
RadTreeNode CurrentNode = rdTree.FindNodeByValue(FolderID.ToString ());
dvTempView = dvTree;
dvTempView.RowFilter = "ParentFolderID = " + FolderID.ToString();
dtTreeNodes = dvTempView.ToTable();
if (dtTreeNodes.Rows.Count > 0)
{
foreach (DataRow myRow in dtTreeNodes.Rows)
{
ParentNode = new RadTreeNode();
ParentNode.Text = myRow["FolderName"].ToString();
ParentNode.Value = myRow["FolderID"].ToString();
ParentNode.ImageUrl = imageURL;
skNodeCollection.Push(myRow["FolderID"]);
CurrentNode.Nodes.Add(ParentNode);
dvTree = dvTempView;
CreateNodes();
}
}
else
{
dvTree = dvTempView;
CreateNodes();
}
}
}
