protected void TreeView1_TreeNodePopulate(object sender, TreeNodeEventArgs e)
{
if(e.Node.ChildNodes.Count==0)
{
switch(e.Node.Depth)//根据节点的深度来判断
{
case 0:
FillAuthors(e.Node);
break;
case 1:
FillTitleForAuthors(e.Node);
break;
}
}
}
public void FillAuthors(TreeNode node)
{
SqlConnection conn = new SqlConnection("server=.;uid=sa;pwd=;database=pubs");
SqlCommand cmd = new SqlCommand("select * from authors",conn);
SqlDataAdapter dap = new SqlDataAdapter(cmd);
DataSet ds = new DataSet();
dap.Fill(ds);
if(ds.Tables.Count>0)
{
foreach(DataRow row in ds.Tables[0].Rows)//逐行循环;
{
TreeNode newNode = new TreeNode(row["au_fname"].ToString(),row["au_id"].ToString());
newNode.PopulateOnDemand = true;//动态填充节点,表示该节点会动态扩展;
newNode.SelectAction = TreeNodeSelectAction.Expand;//这属性是重点
node.ChildNodes.Add(newNode);
}
}
}
public void FillTitleForAuthors(TreeNode node)
{
string authorID = node.Value;
SqlConnection conn = new SqlConnection("server=.;uid=sa;pwd=;database=pubs");
SqlCommand cmd = new SqlCommand("Select T.title, "+
"T.title_id From titles T" +
" Inner Join titleauthor TA on T.title_id = TA.title_id " +
" Where TA.au_id = " + authorID + "",conn);
SqlDataAdapter dap = new SqlDataAdapter(cmd);
DataSet ds = new DataSet();
dap.Fill(ds);
if (ds.Tables.Count > 0)
{
foreach (DataRow row in ds.Tables[0].Rows)
{
TreeNode newNode = new TreeNode(
row["title"].ToString(), row["title_id"].ToString());
newNode.PopulateOnDemand = false;
newNode.SelectAction = TreeNodeSelectAction.None;//--
node.ChildNodes.Add(newNode);
}
}
}