使用递归的方法将地区的结构显示在树视图中,数据库中的表存储方式是
ID 地区名 父ID
编程实现?
ID 地区名 父ID
编程实现?
解决方案 »
- 如何检测硬盘的转速以及系统中装有什么杀毒软件
- gridControl的使用
- 求助!!水晶報表中分頁顯示問題。。。急
- C#中如何判断按下了哪个键,比如shift,ctrl
- 为什么同样的数据库连结语句在windows 窗体可运行,在ASP.NET下去显示用户 'NT AUTHORITY\NETWORK SERVICE' 登录失败。连接字符串属性无效 '
- 奇怪的Settings.settings
- 读取word中指定颜色和字号的内容
- 如何在C# 客户端程序里对Web页面的内容抓取并加以分析?
- …………Up有分!!在winForm里从数据库里调出界面中的控件名称如何在代码里实现对属性的修改?………………
- 求解C#连接mysql一个疑难杂症的问题
- Farpoint的每页的行数汇总。有朋友知道吗?
- 如何性能优化C#??
{
TreeNode tempNode=new TreeNode(id);//节点用id表示, 可以查数据库换成此id的地区名
int[] ids=sonNode(id);//通过数据库查询所有父ID=id的值出来
if(ids.length==0)//没有子id
{
return tempNode;
}
else
{
for(int i=0;i<ids.length;i++)
{
tempNode.Nodes.Add(file(ids[i]));//递归
}
return tempNode;
}
}
{
this.myRegion = ExecuteSql("SELECT * FROM 地区表"); //myRegion为Datatable trvXML.Nodes.Clear(); //trvXML为你的Treeview控件名
TreeNode trvboot = new TreeNode("CHINA");
trvXML.Nodes.Add(trvboot); BuildTree("父ID=0", this.myRegion.Select("父ID=0")[0], trvboot); //这里的0为最顶点ID值
trvXML.Nodes[0].Expand();
} //使用递归创建 TreeView
private void BuildTree(string expression, DataRow drRow, TreeNode lstNode)
{
int superCount = this.myRegion.Select(expression).Length;
if (superCount > 0)
{
foreach (DataRow dr in this.myRegion.Select(expression))
{
string childExpress = string.Format("父ID={0}", dr["ID"].ToString());
if (this.myRegion.Select(childExpress).Length > 0)
{
TreeNode sublst = new TreeNode(dr["地区名"].ToString());
lstNode.Nodes.Add(sublst);
BuildTree(childExpress, dr, sublst);
}
else
{
BuildTree(childExpress, dr, lstNode);
}
}
}
else
{
TreeNode node = new TreeNode(drRow["地区名"].ToString());
lstNode.Nodes.Add(node);
}
}更多方法,参考:http://topic.csdn.net/u/20090610/11/dc7942ba-901a-4bad-bb56-f77da9ecbd79.html
http://topic.csdn.net/u/20090610/11/dc7942ba-901a-4bad-bb56-f77da9ecbd79.html