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

解决方案 »

  1.   

    你应该这样想
    由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这样就可以区分 展开和连接了按照你的表结构  部门就是 树枝  员工就是叶子
      

  2.   

    xiaobingking(红衣) 结点是从表中读出来的,那个是Value 怎么设的?
      

  3.   

    我的TreeView 怎么没有 SelectedNode 属性啊
      

  4.   

    Value 就是treenode的属性阿 就像 NavigateUrl一样的设置我用的2005 难道你不是?