妳是要動態生成還是靜態生成??靜態的就直接在設計器treeview?的Nodes屬性裏添加就可以了?
動態的話給妳個源碼。
public?void?AddTree(int?ParentID,?TreeNode?pNode,?TreeView?treeView,?DataTable?dt){
DataView?dvTree?=?new?DataView(dt);
//過濾ParentID,得到當前的所有子節點
//dvTree.RowFilter?=?"[PARENTID]?=?"?+?ParentID;
dvTree.RowFilter?=?"[PARENTID]="?+?ParentID;
foreach?(DataRowView?Row?in?dvTree)
{
TreeNode?Node?=?new?TreeNode();
if?(pNode?==?null)
{//添加根節點
Node.Text?=?Row["projectName"].ToString();
treeView.Nodes.Add(Node);
//Node.Expanded?=?true;
AddTree(Int32.Parse(Row["projectID"].ToString()),?Node,?treeView,?dt);//再次遞歸
}
else
{//?添加當前節點的子節點
Node.Text?=?Row["ProjectName"].ToString();
pNode.Nodes.Add(Node);
//Node.Expanded?=?true;
AddTree(Int32.Parse(Row["projectID"].ToString()),?Node,?treeView,?dt);?//再次遞歸
}
}
}
private?void?動態treeview_Load(object?sender,?EventArgs?e){
SqlConnection?conn?=?new?SqlConnection();
conn.ConnectionString?=?"data?source=.;database=sysdata;uid=sa;pwd=;";
conn.Open();
SqlDataAdapter?sqlda?=?new?SqlDataAdapter("select?*?from?project",conn);
DataSet?ds?=?new?DataSet();
sqlda.Fill(ds);
conn.Close();
AddTree(0,?(TreeNode)null,treeView1,ds.Tables[0]);
}
結果如圖?
數據庫設計就是三個字段?當然?妳也可以設計更多
我數據表的三個字段projectId?//項目編碼?projectName//項目名?顯示出來是節點的標簽
ParentId?父節點的編碼