有2張表,結構如下:
表province結構:province_id province_name ( primary key:province_id)
表city結構:city_id,city_name,province_id (primary key:city_id,province_id) SqlConnection conn = new SqlConnection("server=zzy;integrated security=sspi;database=test");
SqlDataAdapter da;
DataSet ds = new DataSet();
private void Form1_Load(object sender, EventArgs e)
{
readNodes();
this.treeView1.ExpandAll();
}
private void readNodes()
{
string _sql = "select * from province";
da = new SqlDataAdapter(_sql, conn);
da.Fill(ds, "province");
DataView dvw1 = new DataView(ds.Tables["province"]);
int i = 0;
foreach (DataRowView myRow1 in dvw1)
{
string strProvinceName = myRow1["province_name"].ToString().Trim();
this.treeView1.Nodes.Add(new TreeNode(strProvinceName));//read ParentNode
//---------------------------------------------------------------------------------------------------------------------------------------//
da = new SqlDataAdapter("select * from city where province_id='"+myRow1["province_id"].ToString().Trim()+"'",conn);
da.Fill(ds,"city");
DataView dvw2 = new DataView(ds.Tables["city"]);
foreach (DataRowView myRow2 in dvw2)
{
string strCityName = myRow2["city_name"].ToString().Trim();
this.treeView1.Nodes[i].Nodes.Add(new TreeNode(strCityName));//read ChildNode
}
i++;
ds.Tables["city"].Clear();
this.treeView1.SelectedNode = treeView1.Nodes[0];
}
}
結果如下:
備忘:以上代碼所展示的TreeView只支援2層樹結構(跟我測試的Table結構有關),方法比較原始,呵呵,若要擴充可以通過遞迴調用來實現樹型結構的結點讀取!