Предполагая, что столбец базы данных, содержащий URL-адрес, называется url
, вам сначала нужно извлечь их из базы данных:
private void PopulateRootLevel()
{
SqlConnection objConn = new SqlConnection(@"server=AG-SERVER;Initial Catalog=abc;User ID=ab-cdef;Password=1234");
SqlCommand objCommand=new SqlCommand(@"select id,title,url,(select count(*) FROM SampleCategories WHERE parentid=sc.id) childnodecount FROM SampleCategories sc where parentID IS NULL",objConn );
SqlDataAdapter da=new SqlDataAdapter(objCommand);
DataTable dt=new DataTable();
da.Fill(dt);
PopulateNodes(dt,TreeView1.Nodes);
}
private void PopulateSubLevel(int parentid,TreeNode parentNode)
{
SqlConnection objConn = new SqlConnection(@"server=AG-SERVER;Initial Catalog=abc;User ID=ab-cdef;Password=1234");
SqlCommand objCommand=new SqlCommand(@"select id,title,url,(select count(*) FROM SampleCategories WHERE parentid=sc.id) childnodecount FROM SampleCategories sc where parentID=@parentID",objConn );
objCommand.Parameters.Add("@parentID", SqlDbType.Int).Value = parentid;
SqlDataAdapter da=new SqlDataAdapter(objCommand);
DataTable dt=new DataTable();
da.Fill(dt);
PopulateNodes(dt,parentNode.ChildNodes);
}
Затем назначить их для NavigateUrl свойствузлы вашего дерева:
private void PopulateNodes(DataTable dt,TreeNodeCollection nodes)
{
foreach( DataRow dr in dt.Rows)
{
TreeNode tn=new TreeNode();
tn.Text = dr["title"].ToString();
tn.Value = dr["id"].ToString();
tn.NavigateUrl = dr["url"].ToString();
nodes.Add(tn);
//If node has child nodes, then enable on-demand populating
tn.PopulateOnDemand = ((int)(dr["childnodecount"]) > 0);
}
}