小弟刚学习不久,忘大侠们指点,我现在在一个窗体上,左边是一个treeview,假如我父及是部门,子及是人名,假如有两个人名,小红,小莉,但我鼠标单击人名的时候,在窗体的右边就会刷新数来个人的详细信息,右边假如我放了 姓名 性别 出生日期这样的文本框,请问这样的问题怎么解决呢,对了,我左边的treeview已经都弄好了,显示出来了,现在的问题就是单击人名 右边出现个人的详细信息,希望大侠们给我点意见,最好有点代码,小弟先谢谢了!!
调试欢乐多
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; }
}
}
右边可以放个 listview 控件,
左边的treeview中全是部门,点击部门后,在右边的listview中显示人员清单和相关信息
谢谢了,呵呵,现在我先弄弄这种简单的,这个会了以后再弄那个!
那我怎么抓取 鼠标单击人名的这个过程呢
select * from table where 人名='"+treeview1.selectednode.text+"';
你这句话有问题吧 我右边 是文本框 单击人名 他就显示在右边的框里!
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查询用户的信息
}
想法很好哦,分步实现!
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;
}
};
你这种 像 我 性别 出生日期 照片 在右边的文本框中能显示吗?
我新手啊 笨的很 也没人教我 郁闷 你有什么好的建议 再给我提提呗 谢谢了 大侠!
{
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划分架构,将两个页面加载进来,最后形成点击左边,右边显示用户信息。