其实并不单单是这个函数的问题,还要结合TreeView的SelectIndexChanged事件来实现,通过dataSet的DataTable对象生成一个DataView就行数据的过滤就可以啦。

解决方案 »

  1.   

    够造函数里
    rootNode.Text=DepartmentName;
    this.Tv.Nodes.add(rootNode);InitTreeView(TreeNode rootNode,DataSet ds)
    {
    TreeNode node=new TreeNode();
    foreach(DataRow row in ds.tables["employee"].rows)
    {
    node.text=row["name"].tostring();
    InitTreeView(node,row);
    node=new TreeNode();
    }
    }然后你就可以使用afterselect将datagrid的数据源指定就可!你要先的到name,然后操作
      

  2.   

    for (r = 0; r < count; ++ r)
    {
    drow=dt.Rows[r];
    Microsoft.Web.UI.WebControls.TreeNode treenode;
    treenode = new Microsoft.Web.UI.WebControls.TreeNode();
    treenode.Text= drow["NAME"].ToString();  // 给节点绑定显示值treenode.NodeData="1"; // 给节点绑定key值
    treenode.Expanded=true; // 默认根结点为展开
    treenode.Target = "main";
    treenode.NavigateUrl = "gzzgl.aspx?id="+drow["ID"].ToString();
    TreeView1.Nodes[0].Nodes[0].Nodes.Add(treenode);
    }
      

  3.   

    一种从数据库利用xml创建树型目录的方法
    http://www.aspx8.com/teach/list.asp?id=262
    http://www.aspx8.com/teach/list.asp?id=261这个应该就你要得咚咚。
      

  4.   

    不知道大家考虑到了DepartmentName有重复的现象没有?
      

  5.   

    //read directorys and files
    private void fillTreeView(string path, TreeNode n)
    {
    try
    {
    DirectoryInfo di = new DirectoryInfo(path);
    foreach(DirectoryInfo d in di.GetDirectories())
    {
    //add a node in treeview
    TreeNode node = new TreeNode(d.Name);
    if(n == null) //is root node
    treeView.Nodes.Add(node); //add a root node
    else
    n.Nodes.Add(node); //add a child node
    //add files in this path
    foreach(FileInfo fi in d.GetFiles())
    node.Nodes.Add(fi.Name);
    //a circle ,this line can read all dir and files.but is a waste of system resource
    fillTreeView(d.FullName, node);
    }
    }
    catch(Exception eFTV){MessageBox.Show(eFTV.Message);}
    }注释很详细,应该可以看懂啊。
      

  6.   

    private void MainForm_Load(object sender, System.EventArgs e)
    {
    string strSql = "select Department.Name as DepartmentName,Employee.* from Employee,Department,Users";
    strSql += "where Employee.RegName = Users.RegName";
    strSql += "and Employee.DepartmentID = Department.ID";
    strSql += "and Users.UserLevel < '"+this.UserLevel+"'";
    string DataSetName ="Employees";
    LS = new EnterpriseManager.localhost.LoginService();
    DS = LS.GetData(strSql,DataSetName); foreach(DataRow row in DS.Tables["Department"].Rows)
    {
    TreeNode rootNode = new TreeNode();
    rootNode.Text = row["Name"].ToString();
    this.treeView1.Nodes.Add(rootNode);
    rootNode = new TreeNode();
    }我这样写为什么会返回有关调用实时(JIT)调试而不是此对话框的详细信息,
    请参阅此消息的结尾。************** 异常文本 **************
    System.NullReferenceException: 未将对象引用设置到对象的实例。
       at EnterpriseManager.MainForm.MainForm_Load(Object sender, EventArgs e) in c:\documents and settings\he.cl\my documents\visual studio projects\loginmanager\enterprisemanager\mainform.cs:line 127
       at System.Windows.Forms.Form.OnLoad(EventArgs e)
       at System.Windows.Forms.Form.OnCreateControl()
       at System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible)
       at System.Windows.Forms.Control.CreateControl()
       at System.Windows.Forms.Control.WmShowWindow(Message& m)
       at System.Windows.Forms.Control.WndProc(Message& m)
       at System.Windows.Forms.ScrollableControl.WndProc(Message& m)
       at System.Windows.Forms.ContainerControl.WndProc(Message& m)
       at System.Windows.Forms.Form.WmShowWindow(Message& m)
       at System.Windows.Forms.Form.WndProc(Message& m)
       at System.Windows.Forms.ControlNativeWindow.OnMessage(Message& m)
       at System.Windows.Forms.ControlNativeWindow.WndProc(Message& m)
       at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
      

  7.   

    for (r = 0; r < count; ++ r)
    {
    drow=dt.Rows[r];
    Microsoft.Web.UI.WebControls.TreeNode treenode;
    treenode = new Microsoft.Web.UI.WebControls.TreeNode();
    treenode.Text= drow["NAME"].ToString();  // 给节点绑定显示值treenode.NodeData="1"; // 给节点绑定key值
    treenode.Expanded=true; // 默认根结点为展开
    treenode.Target = "main";
    treenode.NavigateUrl = "gzzgl.aspx?id="+drow["ID"].ToString();
    TreeView1.Nodes[0].Nodes[0].Nodes.Add(treenode);
    }
      

  8.   

    http://www.csdn.net/develop/read_article.asp?id=23258
      

  9.   

    为什么我这样写得不到一个节点呀!!
    // 递归添加树的节点
    public void AddTree(string ParentString,TreeNode pNode) 
    {
    DataView dvTree = new DataView(DS.Tables[0]);
    //过滤ParentID,得到当前的所有子节点
    dvTree.RowFilter =  "Name = '"+ParentString+"'";
    foreach(DataRowView Row in dvTree) 
    {
    if(pNode == null) 
    {    //'?添加根节点
    TreeNode Node = treeView1.Nodes.Add(Row["EmployeeName"].ToString());
    AddTree(Row["Name"].ToString(),Node);    //再次递归

    else 
    {   //添加当前节点的子节点
    TreeNode Node =  pNode.Nodes.Add(Row["EmployeeName"].ToString());
    AddTree(Row["Name"].ToString(),Node);     //再次递归
    }
    }                   
    }             private void MainForm_Load(object sender, System.EventArgs e)
    {
    string strSql = "select Department.Name,Employee.* from Department ";
    strSql += " INNER JOIN Employee ON Department.ID = Employee.DepartmentID ";
    strSql += " and Department.UseLevel <= '"+this.UserLevel+"'";
    string DataSetName ="Employees";
    LS = new EnterpriseManager.localhost.LoginService();
    DS = LS.GetData(strSql,DataSetName);

    if(DS.Tables["Table"].Rows.Count > 0)
    {
    DataRow row = DS.Tables[0].Rows[0];
    TreeNode rootNode = new TreeNode();
    string Caption = row["Name"].ToString();
    Caption = rootNode.Text ;
    AddTree(Caption,rootNode);
    /*
    foreach(DataRow row in DS.Tables["Table"].Rows)
    {
    TreeNode rootNode = new TreeNode();
    rootNode.Text = row["DepartmentName"].ToString();
    this.treeView1.Nodes.Add(rootNode);
    rootNode = new TreeNode();
    }
    */
    }
    }
      

  10.   

    整理了一下!
    // 递归添加树的节点
    public void AddTree(string ParentString,TreeNode pNode) 
    {
    DataView dvTree = new DataView(DS.Tables[0]);
    //过滤ParentID,得到当前的所有子节点
    dvTree.RowFilter =  "Name = '"+ParentString+"'";
    foreach(DataRowView Row in dvTree) 
    {
               if(pNode == null) 
              {    //'?添加根节点
                 TreeNode Node = treeView1.Nodes.Add(Row["EmployeeName"].ToString());
                 AddTree(Row["Name"].ToString(),Node);    //再次递归
              } 
               else 
              {   //添加当前节点的子节点
                 TreeNode Node =  pNode.Nodes.Add(Row["EmployeeName"].ToString());
                 AddTree(Row["Name"].ToString(),Node);     //再次递归
              }
           }                   
    }            private void MainForm_Load(object sender, System.EventArgs e)
    {
    string strSql = "select Department.Name,Employee.* from Department ";
    strSql += " INNER JOIN Employee ON Department.ID =   Employee.DepartmentID ";
    strSql += " and Department.UseLevel <= '"+this.UserLevel+"'";
    string DataSetName ="Employees";
    LS = new EnterpriseManager.localhost.LoginService();
    DS = LS.GetData(strSql,DataSetName); if(DS.Tables["Table"].Rows.Count > 0)
    {
    DataRow row = DS.Tables[0].Rows[0];
    TreeNode rootNode = new TreeNode();
    string Caption = row["Name"].ToString();
    Caption = rootNode.Text ;
    AddTree(Caption,rootNode);
    }
    }