我的数据表是gx表,里面就两列数据,fth(父图号)和zth(子图号),例如
fth zth
中国 浙江
中国 湖北
浙江 杭州
浙江 宁波
杭州 余杭
杭州 萧山
······web程序中有个textbox1和treeview1,在textbox1中输入父图号值,点button,treeview中就会显示相应内容。例如在textbox1中输入“浙江”,treeview1就会显示“
浙江
杭州
余杭
萧山
宁波请问该如何写这段代码?
fth zth
中国 浙江
中国 湖北
浙江 杭州
浙江 宁波
杭州 余杭
杭州 萧山
······web程序中有个textbox1和treeview1,在textbox1中输入父图号值,点button,treeview中就会显示相应内容。例如在textbox1中输入“浙江”,treeview1就会显示“
浙江
杭州
余杭
萧山
宁波请问该如何写这段代码?
数据库结构:
id name parentid
1 一级 0
2 科技 1
3 沈阳 2
4 二级 0
5 美食 4
6 哈尔滨 5
7 三级 0
8 美食 7
9 大连 8 private void LoadTree()
{
treeView1.Nodes.Clear(); //先清空树
DataTable dt = ds.Tables[0]; //把表结构从数据库查出来放到DataTable中
//循环绑定父节点
foreach (DataRow dr in dt.Rows)
{
//遍历加载父节点
if (Convert.ToInt32(dr["parentid"]) == 0)
{
TreeNode newNode = new TreeNode(dr["name"].ToString());
treeView1.Nodes.Add(newNode); ChildLoad(dr, newNode, dt);
}
} this.treeView1.ExpandAll();
} //绑定子节点
private void ChildLoad(DataRow dr, TreeNode newNode, DataTable dt)
{
foreach (DataRow row in dt.Rows)
{
if (Convert.ToInt32(dr["id"]) == Convert.ToInt32(row["parentid"]))
{
TreeNode childNode = new TreeNode();
childNode.Text = row["name"].ToString();
newNode.Nodes.Add(childNode); ChildLoad(row, childNode, dt); //递归子节点
}
}
}
private void TreeViewBind()
{
//bind treeview
tv.Nodes.Clear();
treeNode level1Node = new TreeNode();
level1Node.Text ="浙江";
tv.Nodes.Add(level1Node);
InitialTree(level1Node,"浙江");}
//递归绑定子节点
private void InitialTree(TreeNode parentNode, string t)
{
for (int i = 0; i < list.Count; i++)
{
if (list[i].fth.equals(t))
{
TreeNode childNode = new TreeNode();
childNode.Text = list[i].zth;
InitialTree(childNode, list[i].zth);
parentNode.ChildNodes.Add(childNode);
}
}
}
{
treeView1.Nodes.Clear(); //先清空树
DataTable dt = ds.Tables[0]; //把表结构从数据库查出来放到DataTable中
//循环绑定父节点
foreach (DataRow dr in dt.Rows)
{
//遍历加载父节点
if (dr["fth"] == '浙江') //绑定浙江
{
TreeNode newNode = new TreeNode(dr["fth"].ToString());
treeView1.Nodes.Add(newNode); ChildLoad(dr, newNode, dt);
}
} this.treeView1.ExpandAll();
} //绑定子节点
private void ChildLoad(DataRow dr, TreeNode newNode, DataTable dt)
{
foreach (DataRow row in dt.Rows)
{
if (dr["fth"] == row["zth"])
{
TreeNode childNode = new TreeNode();
childNode.Text = row["zth"].ToString();
newNode.Nodes.Add(childNode); ChildLoad(row, childNode, dt); //递归子节点
}
}
}
是不是应该在
TreeView1.Nodes.Clear(); //先清空树
string sqlname = "SELECT fth,zth from gx where fth='浙江'";
SqlConnection cn = new SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["ConnString1"]);
SqlCommand cmd = new SqlCommand(sqlname, cn);
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataSet ds = new DataSet();
DataTable dt = ds.Tables[0];
报错说我”字符文本中的字符太多“,该怎样解决??
不知道可不可以?
行 97: childNode.Text = row["zth"].ToString();
行 98: newNode.Nodes.Add(childNode);
行 99:
行 100: ChildLoad(row, childNode, dt); //递归子节点
自己定义一个根节点:tn,tn.tag="zhongguo",然后调用addtreenode(tn.nodes,tn.tag);
public void addtreenode(TreeNodeCollection nodes, string fnodetag)
{
DataView dv = new DataView(mytable);
if (fnodetag != null)
{
dv.RowFilter = "FParentID=" + fnodetag;
}
foreach (DataRowView drv in dv)
{
if (drv[1].ToString() != "")
{
TreeNode snode = new TreeNode(drv[1].ToString());
snode.Tag = drv[0].ToString();
nodes.Add(snode);
this.addtreenode(snode.Nodes, snode.Tag.ToString());
}
}
}
改成
newNode.ChildNodes.Add(childNode);
应该可以了
protected void TreeView1_Load(object sender, EventArgs e)
{
TreeView1.Nodes.Clear(); //先清空树
string sqlname = "SELECT fth,zth from gx where fth='HW69090701'";
SqlConnection cn = new SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["ConnString1"]);
SqlCommand cmd = new SqlCommand(sqlname, cn);
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataSet ds = new DataSet();
DataTable dt = ds.Tables[0];//把表结构从数据库查出来放到DataTable中
//循环绑定父节点
foreach (DataRow dr in dt.Rows)
{
//遍历加载父节点
if (dr["fth"].ToString()=="HW69090701") {
TreeNode newNode = new TreeNode(dr["fth"].ToString());
TreeView1.Nodes.Add(newNode); ChildLoad(dr, newNode, dt);
}
} this.TreeView1.ExpandAll(); }
private void ChildLoad(DataRow dr, TreeNode newNode, DataTable dt)
{
foreach (DataRow row in dt.Rows)
{
if (dr["fth"] == row["zth"])
{
TreeNode childNode = new TreeNode();
childNode.Text = row["zth"].ToString();
//newNode.Nodes.Add(childNode);
newNode.ChildNodes.Add(childNode); ChildLoad(row, childNode, dt); //递归子节点
}
}
}