Thursday, May 29, 2008

C#.net: My Method for easily binding TreeView

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();
}
}
}

About Me

My photo
Alappuzha, Kerala, India