.net树状图显示问题!急!!!!!!!!!!!!!!!!

weektao 2012-09-28 03:32:42
数据库有三个表
零件表 NCMS_PARTS(OBJECT_ID 主键,PARTS_SN),
NCMS_PRODUCT_STRUCT_RELATION(这个表就两个字段,PARENT_ID,CHILD_ID) ,
产品表 NCMS_PRODUCTS(OBJECT_ID 主键 ,PRODUCT_SN)

要求显示树状图。B/S页面。
求全部代码。。。
...全文
176 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
零点突袭1 2012-09-28
  • 打赏
  • 举报
回复
给个简单点的给你看
TreeView TreeView1 = new TreeView();//实例化一个树状图
protected void Page_Load(object sender, EventArgs e)
{
TreeView1.SelectedNodeChanged += new EventHandler(TreeView1_SelectedNodeChanged);
form1.Controls.Add(TreeView1);//把TreeView1控件显示在页面上
TreeView1.ExpandDepth = 0;//树状图折叠
if (!IsPostBack)//写这样的 避免单击一次重复加载一次
{
string sql1 = "select distinct(DepartmentName) from Team ";
DBhelp db = new DBhelp();
try
{
DataTable dt1 = db.IndirectVisit(sql1, false);
foreach (DataRow item in dt1.Rows)
{
//先得到第一个节点
TreeView1.Nodes.Add(new TreeNode(item["DepartmentName"].ToString()));
}
for (int i = 0; i < TreeView1.Nodes.Count; i++)
{
string sql2 = "select TeamName from Team where DepartmentName=@DepartmentName";
SqlParameter arge = new SqlParameter("@DepartmentName", SqlDbType.NVarChar, 10);
arge.Value = TreeView1.Nodes[i].Text;//以第一节点的文字作为条件
DataTable dt2 = db.IndirectVisit(sql2, false, arge);
//在得到第一节点后面的子节点
foreach (DataRow item in dt2.Rows)
{
TreeView1.Nodes[i].ChildNodes.Add(new TreeNode(item["TeamName"].ToString()));

}
}

}
catch (Exception ex)
{
ClientScript.RegisterStartupScript(this.GetType(), "aaa", "<script>alert('" + ex.Message + "')</script>");
}
}

}
weektao 2012-09-28
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 的回复:]
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.SqlClient;
publi……
[/Quote]

只显示PARTS_SN(零件)跟PRODUCT_SN(产品),
如 产品1
--零件1
--零件2
产品2
--零件1
--零件2
mecrtli 2012-09-28
  • 打赏
  • 举报
回复
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.SqlClient;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
bindTreeView();
}
}
private void bindTreeView()
{
DataTable dt = new DataTable();
try
{
string str = "此处是连接你数据库的语句";
SqlConnection con = new SqlConnection();
con.ConnectionString = str;
SqlCommand cmd = new SqlCommand();
cmd.CommandType = CommandType.Text;
cmd.CommandText = "select * from table"; //此处是要从数据库取出的数据 根据你的情况 设定相应的查询语句
cmd.Connection = con;
SqlDataAdapter sqldap = new SqlDataAdapter();
sqldap.Fill(dt);
}
catch (Exception err)
{
throw new Exception(err.Message);
}
FirstItemFill(dt);
}
//此处是添加产品目录
private void FirstItemFill(DataTable dt)
{
TV.Nodes.Clear(); //TV是你添加的TreeView控件名
DataRow[] drs = dt.Select("ParentID=-1");
foreach (DataRow dr in drs)
{
TreeNode tNode = new TreeNode();
tNode.Text = dr["NodeName"].ToString();
tNode.Value = dr["ID"].ToString();

if (dr["IsLeaf"].ToString() == "0")
{
tNode.SelectAction = TreeNodeSelectAction.Expand;
}
else
{
tNode.SelectAction = TreeNodeSelectAction.SelectExpand;
}

TV.Nodes.Add(tNode);
DataRow[] childdrs = dt.Select("ParentID=" + dr["ID"].ToString());
//DataRow[] childdrs = dt.Select("ParentID=" + tNode.Value);
FillNextNode(tNode, childdrs, dt);
}
}

private void FillNextNode(TreeNode tNode, DataRow[] drs, DataTable dt)
{
foreach (DataRow dr in drs)
{
TreeNode cNode = new TreeNode();
cNode.Text = dr["NodeName"].ToString();
cNode.Value = dr["ID"].ToString();

if (dr["IsLeaf"].ToString() == "0") //islesf表示 是否是叶子节点
{
cNode.SelectAction = TreeNodeSelectAction.Expand;
}
else
{
cNode.SelectAction = TreeNodeSelectAction.SelectExpand;
}

tNode.ChildNodes.Add(cNode);
DataRow[] childdrs = dt.Select("ParentID=" + dr["ID"].ToString());
FillNextNode(cNode, childdrs, dt);
}
}
}

/*如果你不想修改绑定TreeView部分的代码 那么你就在数据库创建一个临时表 这个临时表
包含 三个表的信息 并且 添加ParentID,IsLeaf,两个列 这两个列的值很好取 如果是产品 ParentID 取-1 isleaf 取-1
如果是零件 则ParentID取0 isleaf取0 */
sdbtongtong 2012-09-28
  • 打赏
  • 举报
回复
treeveiw树形控件,读出数据绑定到这个控件,网上一搜一大片
weektao 2012-09-28
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]

http://www.alixixi.com/program/a/2008050627191.shtml
[/Quote]

连接的是sql2008.
上面连接数据库的那一段怎么改啊?
孟子E章 2012-09-28
  • 打赏
  • 举报
回复
http://www.alixixi.com/program/a/2008050627191.shtml
weektao 2012-09-28
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

TreeView控件就可以啊。网上有下哦那个数据库取数据绑定TreeView的代码,
[/Quote]

求代码。菜鸟求代码学习。
孟子E章 2012-09-28
  • 打赏
  • 举报
回复
TreeView控件就可以啊。网上有下哦那个数据库取数据绑定TreeView的代码,

62,103

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧