小弟刚学习不久,忘大侠们指点,我现在在一个窗体上,左边是一个treeview,假如我父及是部门,子及是人名,假如有两个人名,小红,小莉,但我鼠标单击人名的时候,在窗体的右边就会刷新数来个人的详细信息,右边假如我放了 姓名 性别 出生日期这样的文本框,请问这样的问题怎么解决呢,对了,我左边的treeview已经都弄好了,显示出来了,现在的问题就是单击人名 右边出现个人的详细信息,希望大侠们给我点意见,最好有点代码,小弟先谢谢了!!

解决方案 »

  1.   


    public partial class FolderTree : TreeView
        {
            string _rootFolder = "";
            bool _showFiles = true;
            bool _inInit = false;
            public FolderTree()
            {
            }
            [Category("控件行为"), Description("设置根节点"), DefaultValue(@"C:\123")]
            public string RootFolder
            {
                get { return _rootFolder; }
                set
                {
                    _rootFolder = value;
                    if (!_inInit)
                        InitializeTree();
                }
            }
            [Category("控件行为"), Description("文件是否可见"), DefaultValue(true)]
            public bool ShowFiles
            {
                get { return _showFiles; }
                set { _showFiles = value; }
            }
            [Browsable(false)]
            public string SelectedFolder
            {
                get
                {
                    if (this.SelectedNode is FolderNode)
                        return ((FolderNode)this.SelectedNode).FolderPath;
                    return "";
                }
            }
            private void LoadTree(FolderNode folder)
            {
                string[] dirs = Directory.GetDirectories(folder.FolderPath);
                foreach (string dir in dirs)
                {
                    FolderNode tmpfolder = new FolderNode(dir);
                    folder.Nodes.Add(tmpfolder);
                    LoadTree(tmpfolder);
                }
                if (_showFiles)
                {
                    string[] files = Directory.GetFiles(folder.FolderPath);
                    foreach (string file in files)
                    {
                        FileNode fnode = new FileNode(file);
                        folder.Nodes.Add(fnode);
                    }
                }
            }
            private void InitializeTree()
            {
                if (!this.DesignMode && _rootFolder != "")
                {
                    FolderNode rootNode = new FolderNode(_rootFolder);
                    LoadTree(rootNode);
                    this.Nodes.Clear();
                    this.Nodes.Add(rootNode);
                }
            }
        }
        public class FileNode : TreeNode
        {
            string _fileName = "";
            FileInfo _info;
            public FileNode(string fileName)
            {
                _fileName = fileName;
                _info = new FileInfo(_fileName);
                base.Text = _info.Name;
                if (_info.Extension.ToLower() == ".exe")
                    this.ForeColor = Color.Red;
            }
            public string FileName
            {
                get { return _fileName; }
                set { _fileName = value; }
            }
            public FileInfo FileNodeInfo
            {
                get { return _info; }
            }
        }
        public class FolderNode : TreeNode
        {
            string _folderPath = "";
            DirectoryInfo _info;
            public FolderNode(string folderPath)
            {
                _folderPath = folderPath;
                _info = new DirectoryInfo(folderPath);
                this.Text = _info.Name;
            }
            public string FolderPath
            {
                get { return _folderPath; }
                set { _folderPath = value; }
            }
            public DirectoryInfo FolderNodeInfo
            {
                get { return _info; }
            }
        }
      

  2.   

    给你个建议,
    右边可以放个 listview 控件,
    左边的treeview中全是部门,点击部门后,在右边的listview中显示人员清单和相关信息
      

  3.   

    treeview绑定时除了为treeView1.Nodes[i].Text附值,还可以给treeView1.Nodes[i].Tag附上这个人的ID
      

  4.   

    qqamoon
    谢谢了,呵呵,现在我先弄弄这种简单的,这个会了以后再弄那个!
      

  5.   

    fdh120
    那我怎么抓取 鼠标单击人名的这个过程呢 
      

  6.   

    在TREE单击事件下写一个查询语句,把节点上的人名作为条件;查询的结果显示在右边就行了
    select * from table where 人名='"+treeview1.selectednode.text+"';
      

  7.   

    AfterSelect事件 选定treeview内容时触发
      

  8.   

    flowfog
    你这句话有问题吧  我右边 是文本框   单击人名 他就显示在右边的框里!
      

  9.   

      点击人名,他要触发事件,放在load事件中试试,根据点击人名得到id,在查出来给到文本框
      

  10.   

    TreeNode的Tag属性中可以保存任何你需要的信息,你构造Tree的时候就将节点信息(如id,name)保存到TreeNode的tag中,当选中节点后,在从tag中取出对应的信息//构造树时
    NodeInfo info = new NodeInfo(id, name);
    TreeNode newNode = new TreeNode(name);
    newNode.Tag = info;
    treeview1.Nodes.Add(newNode);
    //读取时
    TreeNode selected = treeview1.SelectedNode;
    if(selected != null)
    {
       NodeInfo info = selected.Tag as NodeInfo;
       string id = info.id;
       string name = info.name;
       // 根据id 或name查询用户的信息
    }
      

  11.   


    想法很好哦,分步实现!
    this.treeView1.AfterSelect += (obj, args) =>
    {
        // 通过 SelectedNode.Level 判断选择的是否是人名
        if (this.treeView1.SelectedNode.Level == 1)
        {
            TreeNode treeNode = this.treeView1.SelectedNode;        string name = treeNode.Text; // 获取名字        // 下面就可以根据名字获取其他数据并显示了
            this.textBox1.Text = name;
        }
    };
      

  12.   

    qqamoon
    你这种 像 我 性别 出生日期  照片 在右边的文本框中能显示吗?
      

  13.   

    fdh120
    我新手啊  笨的很 也没人教我 郁闷  你有什么好的建议 再给我提提呗 谢谢了  大侠!
      

  14.   

     private void treeUser()
            {
                TreeNode root = new TreeNode();
                root.Text = "用户列表";
                root.Value = "0";
                root.NavigateUrl = "#";
                TreeView1.Nodes.Add(root);            DataSet dsUser = bllUserInfo.GetList("");
                Session["UserName"] = dsUser.Tables[0].Rows[0]["UserName"].ToString();
                Session["UserID"] = dsUser.Tables[0].Rows[0]["UserID"].ToString();
                if (dsUser.Tables[0].Rows.Count > 0)
                {
                    for (int i = 0; i < dsUser.Tables[0].Rows.Count; i++)
                    {
                        TreeNode childNode = new TreeNode();
                        childNode.Text = dsUser.Tables[0].Rows[i]["UserName"].ToString();
                        childNode.Value = dsUser.Tables[0].Rows[i]["UserID"].ToString();
                        childNode.NavigateUrl = "Right.aspx?UserID=" + Convert.ToInt32(childNode.Value) + "";                    childNode.Target = "Right";
                        childNode.ExpandAll();
                        root.ChildNodes.Add(childNode);
                    }
                }
            }看到红线了吗?然后Right.aspx使用 Request.QueryString["USerID"];接受用户id之后,然后使用gridview显示用户信息。gridview如果不知道怎么做,可以到网上查一下,或则在开一个帖子,会有很多人告诉你的。
    这个整体的思想:
    左边一个页面:leftpage.aspx,用来显示树形结构
    右边一个页面Right.aspx用来显示用户信息
    有一个总体页user.aspx面使用iframe划分架构,将两个页面加载进来,最后形成点击左边,右边显示用户信息。
      

  15.   

    谢谢各位了 我搞定了 也许我们treeview时,用的方法不一样,我这个就用的本方法  用的查询语句 结贴了!