我用的是Access数据库,表的内容如下:
lngDeptId     lngFatherId     strDeptName
1                 0             北京市
2                 0             上海市
3                 0             广东省
4                 1             怀柔县
5                 1             密云县
6                 3             广州市
7                 3             深圳市
运行如下代码:(C# WinForm)
private DataSet data(string sql)
{
string luj = System.Windows.Forms.Application.StartupPath;
string path = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+luj.Remove(luj.Length-9,9) +"DeptList.mdb;User Id=admin;Password=;";
OleDbConnection conn=new OleDbConnection(path);
conn.Open();
OleDbDataAdapter ad=new OleDbDataAdapter(sql,conn);
DataSet ds = new DataSet();
ad.Fill(ds,"Dept");
conn.Close();
return ds;
}private void Form1_Load(object sender, System.EventArgs e)
{
InitTree(this.treeView1.Nodes, "0");
}private void InitTree(TreeNodeCollection Nds,string ParentId)
{
string a = ParentId;
string sql = "select * from Dept where lngFatherId ='"+a+"'";
DataSet ds = data(sql);
for(int i =0;i<ds.Tables["Dept"].Rows.Count;i++)
{
TreeNode tmpnd= new TreeNode();
tmpnd.Tag =ds.Tables[0].Rows[i][0].ToString();
tmpnd.Text=ds.Tables[0].Rows[i][2].ToString();
Nds.Add(tmpnd);
InitTree(tmpnd.Nodes,ds.Tables[0].Rows[i][0].ToString());
}
}
运行得到的结果却是:
北京市
     北京市
     上海市
     广东省
     怀柔县
     密云县
     广州市
     深圳市
上海市
广东省
     北京市
     上海市
     广东省
     怀柔县
     密云县
     广州市
     深圳市
我想要的结果是:
北京市
     怀柔县
     密云县
上海市
广东省
     广州市
     深圳市请问是怎么回室???应该怎么改???请各位高手帮我改改,或提供一个新的源码,实现我想要的结果。注:树是要多级的,如市下有县,县下有乡镇,……