public void BindCategoryTreeVew(TreeView treeview, bool isExpanded, string sSelectedData)
{
ConStr = System.Configuration.ConfigurationManager.ConnectionStrings["Equip_ConnectionString"].ToString();
OleDbConnection myConnection = new OleDbConnection(ConStr);
string sql = "select TYPE_ID,TYPE_PID,name from IT_ASSETS_TYPE";
System.Data.OleDb.OleDbDataAdapter Da = new OleDbDataAdapter(sql,myConnection);
System.Data.DataSet ds = new DataSet();
myConnection.Open();
Da.Fill(ds,"It_AssetsType");
myConnection.Close();
DataTable dt = ds.Tables["It_AssetsType"];
treeview.Nodes.Clear();
DataRow[] rowlist = dt.Select("TYPE_PID='0'");
if (rowlist.Length <= 0) return;
TreeNode rootNode = new TreeNode();
rootNode.Text = "资产类型";
rootNode.Value = "0";
rootNode.Target = "left";
rootNode.Expanded = isExpanded;
rootNode.Selected = true;
treeview.Nodes.Add(rootNode);
CreateChildNode(rootNode,dt,isExpanded,sSelectedData);
}
private void CreateChildNode(TreeNode parentNode, DataTable dt, bool isExpanded, string sSelectedData)
{
DataRow[] rowList = dt.Select("TYPE_PID='"+parentNode.Value+"'");
foreach (DataRow row in rowList)
{
TreeNode node = new TreeNode();
node.NavigateUrl = "AssetsType.aspx?TYPE_ID=" + row["TYPE_ID"].ToString();
node.Target = "type";
node.Text=row["NAME"].ToString();
node.Value=row["TYPE_ID"].ToString();
node.Expanded = false;
if (node.Value == sSelectedData)
{
node.Selected = true;
}
parentNode.ChildNodes.Add(node);
CreateChildNode(node,dt,isExpanded,sSelectedData);
}
}
数据库结构如下: type_id type_pid status createtime name
01 0 1 资产类型
0104 01 1 pos
0102 01 1 笔记本
0103 01 1 服务器
0101 01 1 台式机 我想实现的树形结构如下: -资产类型
¦
¦-pos
¦-笔记本
¦-服务器
¦-台式机
不知道上面的代码是否正确,请高手指点
{
ConStr = System.Configuration.ConfigurationManager.ConnectionStrings["Equip_ConnectionString"].ToString();
OleDbConnection myConnection = new OleDbConnection(ConStr);
string sql = "select TYPE_ID,TYPE_PID,name from IT_ASSETS_TYPE";
System.Data.OleDb.OleDbDataAdapter Da = new OleDbDataAdapter(sql,myConnection);
System.Data.DataSet ds = new DataSet();
myConnection.Open();
Da.Fill(ds,"It_AssetsType");
myConnection.Close();
DataTable dt = ds.Tables["It_AssetsType"];
treeview.Nodes.Clear();
DataRow[] rowlist = dt.Select("TYPE_PID='0'");
if (rowlist.Length <= 0) return;
TreeNode rootNode = new TreeNode();
rootNode.Text = "资产类型";
rootNode.Value = "0";
rootNode.Target = "left";
rootNode.Expanded = isExpanded;
rootNode.Selected = true;
treeview.Nodes.Add(rootNode);
CreateChildNode(rootNode,dt,isExpanded,sSelectedData);
}
private void CreateChildNode(TreeNode parentNode, DataTable dt, bool isExpanded, string sSelectedData)
{
DataRow[] rowList = dt.Select("TYPE_PID='"+parentNode.Value+"'");
foreach (DataRow row in rowList)
{
TreeNode node = new TreeNode();
node.NavigateUrl = "AssetsType.aspx?TYPE_ID=" + row["TYPE_ID"].ToString();
node.Target = "type";
node.Text=row["NAME"].ToString();
node.Value=row["TYPE_ID"].ToString();
node.Expanded = false;
if (node.Value == sSelectedData)
{
node.Selected = true;
}
parentNode.ChildNodes.Add(node);
CreateChildNode(node,dt,isExpanded,sSelectedData);
}
}
数据库结构如下: type_id type_pid status createtime name
01 0 1 资产类型
0104 01 1 pos
0102 01 1 笔记本
0103 01 1 服务器
0101 01 1 台式机 我想实现的树形结构如下: -资产类型
¦
¦-pos
¦-笔记本
¦-服务器
¦-台式机
不知道上面的代码是否正确,请高手指点
因为你传的DataTable永远不变,所以,貌似只是不停的增加相同的子节点的样子。
你把parentNode.ChildNodes.Add(node); 中的ChildNodes换成Nodes试试