就是像菜单一样,父节点绑定中国(国家表),子节点绑定山西(省份表),子孙节点绑定太原(市区表)!用代码实现。
解决方案 »
- 关于控件treeview的问题
- ScaleTransform只有ScaleX和ScaleY,只能是按比例放缩。能不能按目标大小进行放缩?
- C# 中如何把STRING转换键盘代码
- 前台界面你们使用VS还是使用DW
- 先写代码再做窗体要注意什么?
- DataGridViewComboBoxColumn更改值时引发的事件是什么啊
- 有谁知道c sharp里面的关于系统Event是怎么调用的。
- [*119*]如何实现变量来定义类型???????
- C#中有返回值的Sub的书写与调用
- 如何同时提交保存在不同的frame页里的内容
- 还是读取XML的问题~~请各位高手来解答下~~
- C# checklistBox菜鸟提问...
还分三个表.....
三个表结构是:
id name parentid
吧
循环递归慢慢找吧
private void CreateData() {
dtlModel.Columns.Add("id", typeof(Int32));
dtlModel.Columns.Add("pid", typeof(Int32));
dtlModel.Columns.Add("name"); for (int i = 1; i < 6; i++) {
DataRow dr = dtlModel.NewRow();
dr["id"] = i;
dr["pid"] = 0;
dr["name"] = i.ToString();
dtlModel.Rows.Add(dr);
for (int j = 1; j < 6; j++) {
DataRow dr1 = dtlModel.NewRow();
dr1["id"] = int.Parse(i.ToString() + j.ToString());
dr1["pid"] = i;
dr1["name"] = i + "_" + j;
dtlModel.Rows.Add(dr1);
for (int k = 1; k < 6; k++) {
DataRow dr2 = dtlModel.NewRow();
dr2["id"] = int.Parse(i.ToString() + j.ToString() + k.ToString());
dr2["pid"] = dr1["id"];
dr2["name"] = i + "_" + j + "_" + k;
dtlModel.Rows.Add(dr2);
}
}
}
} private void BindTree(DataRow[] rows, TreeNode node) {
foreach (DataRow r in rows) {
if (r["pid"] == DBNull.Value)
continue; //如果是根结点,添加到TreeView控件
if (r["pid"].ToString() == "0") {
TreeNode node1 = new TreeNode();
node1.Text = string.Format("<input name='hd_{0}' type='hidden' value='{1}'/>{2}", r["id"], r["id"], r["name"].ToString());
node1.Value = r["id"].ToString();
//node1.Target = "top";
TreeView1.Nodes.Add(node1);
BindTree(dtlModel.Select("pid=" + r["id"]), node1);
}
else if (node != null) {//否则添加到当前结点
TreeNode node1 = new TreeNode();
node1.Text = string.Format("<input name='hd_{0}' type='hidden' value='{1}'/>{2}", r["id"], r["id"], r["name"].ToString());
node1.Value = r["id"].ToString();
//node1.Target = "top";
node.ChildNodes.Add(node1);
BindTree(dtlModel.Select("pid=" + r["id"]), node1);//递归生成子树
}
}
}