protected void page_load(object o ,eventargs e )
{//首先填充第一级节点
dataview dv=获取dataview视图函数;
foreach(datarowview datav in dv)
{//循环数据视图,将对应的值交给一个节点对象,然后添加到树上有继续添加
treenode tn=new TreeNode();
tn.Text=datav("title").ToString();
tn.Value=datav("bid").ToString();
tn.Expanded=false;
TreeView1.Nodes.Add(tn);
AddchildNodes(tn);//调用方法填充二级节点
}
}
private void AddchildNodes(TreeNode tn)
{//填充二级节点,他需要一级节点的value ,所以干脆送了一个完整的根节点对象
int bid=Convert.ToInt32(tn.Value);
DataView dv=drv("select * from class where bid="+bid+");
foreach(DataRowView datav in dv)
{//同上
TreeNode ctn=new TreeNode();
ctn.Text=datav["title"].ToString();
ctn.Value=datav["cid"].ToString();
ctn.NavigateUrl="http://thcjp.cnblogs.com/jiashe.aspx?aa="+datav["cid"].ToSring;
tn.ChildNodes.Add(ctn);
//把节点ctn加载到tn下面或者说添加为tn的子节点
}
}
//下面这段代码的作用在于把选用节点的text值打印出来
protect void Button1_Click(object sender,Eventargs e)
{
if(TreeView1.CheckedNodes.Count>0)
{
//如果有项被选中
foreach(TreeNode tn in TreeView1.CheckedNodes)
{//跌代所有被选中的节点
if(tb.ChildNodes.Count>0)
{//如果被选中项下面还有子节点
foreach(TreeNode ctn in tn.ChildNodes)
{//迭代所有子节点,把值读出来
Response.Write(ctn.Text+"<br>");
}
}
else
{
//如果下面没有节点了,说明是叶节点,那么直接读出被选取项的值
Response.Write(tn.Text+"<br>");
}
}
}
}