日期:2014-05-18  浏览次数:20465 次

没什么分,但有个问题。能帮忙吗?
private   void   CreateTree(int   belong,   Microsoft.Web.UI.WebControls.TreeNode   rootnode)
{
DataSet   ds   =   new   DataSet();
OleDbConnection   conn=(new   Data.DbAccess()).DbConn();
OleDbDataAdapter   oda=new   OleDbDataAdapter( "select   *   from   gaoxinqi   where   ParentNode= "+belong,conn);
oda.Fill(ds);
foreach(DataRow   dr   in   ds.Tables[0].Rows)
{
Microsoft.Web.UI.WebControls.TreeNode   treenode   =   new   Microsoft.Web.UI.WebControls.TreeNode();
treenode.Text   =   dr[ "NodeName "].ToString().Trim();
treenode.Expanded   =   true;
treenode.NavigateUrl= "Display.aspx?uid= "+dr[ "Id "].ToString();
treenode.Target= "main ";
rootnode.Nodes.Add(treenode);
int   id   =   int.Parse(dr[ "Id "].ToString().Trim());
CreateTree(id,   treenode);
}
}


private   void   Page_Load(object   sender,   System.EventArgs   e)
{
//   在此处放置用户代码以初始化页面
Microsoft.Web.UI.WebControls.TreeNode   rootnode   =   new   Microsoft.Web.UI.WebControls.TreeNode();
rootnode.Expanded   =   true;
rootnode.Text= "公司信息 ";
rootnode.NavigateUrl= "Display.aspx?uid=0 ";
rootnode.Target= "main ";
TreeView1.Nodes.Add(rootnode);
CreateTree(0,   rootnode);


}
怎么样实现当有下一级结点时,单击它时它展开,不链接。当没有下一级结点时就链接。
数据库结构是这样的(简化)
Id       NodeName   ParentNode
1         董事办           0
2         总经办           0
3         制造部           0
4         工程部           3
5         SMT                 3




------解决方案--------------------
在结点中加标志.
当单击时判断。
------解决方案--------------------
你应该这样想
由2各种东西 1格式树枝 另一个事叶子
树枝包含叶子不能连接 叶子可以连接但不能有下级叶子

所以你添加note的时候就要区分
如果有下级或者将来可能有 就说明这是一个树枝 那么不给他设置NavigateUrl属性 顺便 Value=0 没有NavigateUrl 就不会连接了
如果没有下级 就设置 NavigateUrl属性 顺便 Value=1

然后
Protected Sub TreeView1_SelectedNodeChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles TreeView1.SelectedNodeChanged
If Me.TreeView1.SelectedNode.Value > 0 Then
Me.TreeView1.SelectedNode.ToggleExpandState()
End If
End Sub

这样就可以区分 展开和连接了

按照你的表结构 部门就是 树枝 员工就是叶子