数据库表(nodetable)
id nodeid nodename pid
1 1 工业品 0
2 2 消费品 0
3 11 机械 1
4 12 行业设备 1
用TreeView怎么绑定。
从网上找的代码不好用,没调试成功,现在求源码。(最好用递归)我现在能把nodetable中的数据,读到datatable中了,现在就是不知道怎么把DataTable绑定到树控件。求助。
id nodeid nodename pid
1 1 工业品 0
2 2 消费品 0
3 11 机械 1
4 12 行业设备 1
用TreeView怎么绑定。
从网上找的代码不好用,没调试成功,现在求源码。(最好用递归)我现在能把nodetable中的数据,读到datatable中了,现在就是不知道怎么把DataTable绑定到树控件。求助。
for (int i = 0; i < odr.Tables[0].Rows.Count; i++)
{
MenuItem menuNode = new MenuItem();
menuNode.Text = odr.Tables[0].Rows[i]["munelistname"].ToString();
menuNode.Value = odr.Tables[0].Rows[i]["id"].ToString();
menuNode.Enabled = true;
menuNode.Target = "_self";
menuNode.NavigateUrl = odr.Tables[0].Rows[i]["munelisturl"].ToString();
Menu1.Items.Add(menuNode);
parentID = Convert.ToInt16(odr.Tables[0].Rows[i]["id"].ToString());
addchildmenu1(menuNode, menuNode.Value);
}protected void addchildmenu1(MenuItem pnode, string pid)
{
DataSet odr1 = Sys.BLL.Common.GetMultiTableList("dt_Getmunelist " + parentID + ",'" + loginuserid + " '");
//DataSet odr1 = Sys.BLL.Common.GetMultiTableList("select ml.id, ul.userid,Ml.munelistname,ml.munelisturl,Ml.parentID,Ml.munelsitid from mulisttable Ml,usgroup Ug ,grmunelist gm,Uslogininfo Ul where ul.userid=ug.userid and ug.usergroup= gm.usergroupid and gm.munelistid=ml.id and ul.userid='admin' and parentID=" + parentID + " order by ml.orderid");
for (int i = 0; i < odr1.Tables[0].Rows.Count; i++)
{
MenuItem menuNode = new MenuItem();
menuNode.Text = odr1.Tables[0].Rows[i]["munelistname"].ToString();
menuNode.Value = odr1.Tables[0].Rows[i]["id"].ToString();
menuNode.Enabled = true;
menuNode.Target = "_self";
menuNode.NavigateUrl = odr1.Tables[0].Rows[i]["munelisturl"].ToString();
//Menu1.Items.Add(menuNode);
pnode.ChildItems.Add(menuNode);
parentID = Convert.ToInt16(odr1.Tables[0].Rows[i]["id"].ToString());
addchildmenu2(menuNode, menuNode.Value);
}
}protected void addchildmenu2(MenuItem pnode, string pid)
{ DataSet odr2 = Sys.BLL.Common.GetMultiTableList("dt_Getmunelist " + parentID + ",'" + loginuserid + " '");
// DataSet odr2 = Sys.BLL.Common.GetMultiTableList("select ml.id, ul.userid,Ml.munelistname,ml.munelisturl,Ml.parentID,Ml.munelsitid from mulisttable Ml,usgroup Ug ,grmunelist gm,Uslogininfo Ul where ul.userid=ug.userid and ug.usergroup= gm.usergroupid and gm.munelistid=ml.id and ul.userid='admin' and parentID=" + parentID + " order by ml.orderid");
for (int i = 0; i < odr2.Tables[0].Rows.Count; i++)
{
MenuItem menuNode = new MenuItem();
menuNode.Text = odr2.Tables[0].Rows[i]["munelistname"].ToString();
menuNode.Value = odr2.Tables[0].Rows[i]["id"].ToString();
menuNode.Enabled = true;
menuNode.Target = "_self";
menuNode.NavigateUrl = odr2.Tables[0].Rows[i]["munelisturl"].ToString();
//Menu1.Items.Add(menuNode);
pnode.ChildItems.Add(menuNode);
parentID = Convert.ToInt16(odr2.Tables[0].Rows[i]["id"].ToString());
addchildmenu1(menuNode, menuNode.Value);
}
}接分
private void button1_Click(object sender, EventArgs e)
{
DataTable dt = new DataTable();
dt.Columns.Add("id");
dt.Columns.Add("nodename");
dt.Columns.Add("pid");
dt.Rows.Add("1", "工业品", "0");
dt.Rows.Add("2", "消费品", "0");
dt.Rows.Add("3", "机械", "1");
dt.Rows.Add("4", "行业设备", "1");
// 以上部分 直接从数据库中select 然后 Fill 到 DataTable。 nodes(this.treeView1.Nodes, dt, 0);
}private void nodes(TreeNodeCollection tnode, DataTable dt, int id)
{ DataView dview = new DataView(dt); //创建视图 ,因为只有一张表
dview.RowFilter = "[pid]=" + id + ""; //视图的好处,在于能方便筛选数据
foreach (DataRowView row in dview) //显示每个节点的标题,递归!
{
TreeNode node = new TreeNode();
node.Text = row["nodename"].ToString();
tnode.Add(node);
nodes(node.Nodes, dt, Int32.Parse(row["id"].ToString()));
}
}
{
DataView dv=new DataView();
TreeNode tmpNd;
string intId;
dv.Table=ds.Tables["tree"];
dv.RowFilter="pid='" + parentId + "'" ;
foreach(DataRowView drv in dv)
{
tmpNd=new TreeNode();
tmpNd.Tag=drv["NodeId"].ToString();
tmpNd.Text=drv["NodeName"].ToString();
Nds.Add(tmpNd);
intId=drv["pid"].ToString();
InitTree(tmpNd.Nodes,tmpNd.Tag.ToString());
}
}