求C#treeview的例子,急!!!

麻子Mozart 2009-02-23 02:39:19
如题,加急!
...全文
431 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
a79361360 2009-04-10
  • 打赏
  • 举报
回复
也在用treeview 脑袋都大了
用数据库绑定以后,遇到好多问题,要在页面取得选中节点的值不会做,看了好多方法基本都是winform的
用了一下不是对象空就是没有这个属性,自已本身webform里面的nodechanged事件又不能响应,由于是
数据库绑定节点前面的图标又不是怎么在展开和折叠时动态......郁闷啊
wangping_li 2009-02-23
  • 打赏
  • 举报
回复
把表改成下面这样好些
ID Name PID
1 AAA AAA
2 BBB AAA
3 EEE BBB
4 III EEE
5 CCC AAA
6 GGG CCC
7 HHH CCC
8 DDD AAA


yagebu1983 2009-02-23
  • 打赏
  • 举报
回复
用递归。。。
cppfaq 2009-02-23
  • 打赏
  • 举报
回复

DataTable dt = null;
// 这里添加从数据库加载数据的代码

Dictionary<string, TreeNode> nodesDict = new Dictionary<string, TreeNode>();
foreach (DataRow row in dt.Rows) {
// 遍历并创建树节点
string col1 = row["col1"] as string;
string col2 = row["col2"] as string;
if(!nodesDict.ContainsKey(col1)) {
nodesDict[col1] = new TreeNode(col1);
}
if(!nodesDict.ContainsKey(col2)) {
nodesDict[col2] = new TreeNode(col2);
}

// 设置节点间父子关系
nodesDict[col1].Nodes.Add(nodesDict[col2]);
}


foreach (KeyValuePair<string, TreeNode> pair in nodesDict) {
if(pair.Value.Parent == null) {
treeView1.Nodes.Add(pair.Value);
}
}
zgke 2009-02-23
  • 打赏
  • 举报
回复

private void Form1_Load(object sender, EventArgs e)
{
DataTable _Table = new DataTable();

_Table.Columns.Add("Name1");
_Table.Columns.Add("Name2");

_Table.Rows.Add(new string[] { "AAA", "BBB" });
_Table.Rows.Add(new string[] { "AAA", "CCC" });
_Table.Rows.Add(new string[] { "AAA", "DDD" });
_Table.Rows.Add(new string[] { "BBB", "EEE" });
_Table.Rows.Add(new string[] { "BBB", "FFF" });
_Table.Rows.Add(new string[] { "CCC", "GGG" });
_Table.Rows.Add(new string[] { "CCC", "HHH" });
_Table.Rows.Add(new string[] { "EEE", "III" });



treeView1.Nodes.Add("AAA");

AddTreeNode(treeView1.Nodes[0], _Table,"AAA");


}

private void AddTreeNode(TreeNode p_SubNode,DataTable p_Table,string p_ParentText)
{
DataRow[] _RowList=p_Table.Select("Name1='" + p_ParentText + "'");

for (int i = 0; i != _RowList.Length; i++)
{
string _Text = _RowList[i]["Name2"].ToString();
TreeNode _TreeSubNode = new TreeNode(_Text);
p_SubNode.Nodes.Add(_TreeSubNode);
AddTreeNode(_TreeSubNode, p_Table, _Text);
}
}



别这样建表了...实在不好用,,
麻子Mozart 2009-02-23
  • 打赏
  • 举报
回复
具体是这样的:treeview是个控件。
现有数据如下:TABLE1
col1 col2
AAA BBB
AAA CCC
AAA DDD
BBB EEE
BBB FFF
CCC GGG
CCC HHH
EEE III
.
.
.
想得到数据在treeview控件上显示为:
AAA
-- BBB
-- EEE
-- III
-- FFF
-- CCC
-- GGG
-- HHH
-- DDD
刚接触这个,望大家帮忙。
wackyboy 2009-02-23
  • 打赏
  • 举报
回复

页面中一个TreeView控件“TreeView1” 一个TextBox“TextBox1” 一个按钮“Button1”
在TextBox1中写入路径 点击Button1 执行:
protected void Button1_Click(object sender, EventArgs e)
{
this.TreeView1.Nodes.Clear();
string path = this.TextBox1.Text.Trim();

TreeNode tn = new TreeNode();
tn=FillTreeView(path, tn);
this.TreeView1.Nodes.Add(tn);
}
private TreeNode FillTreeView(string path,TreeNode tn)
{
if (path.Substring(path.Length - 1).CompareTo("\\") != 0)
{
path += "\\";
}
int length = path.Length;
int p = (path.Substring(0, length - 1)).LastIndexOf("\\");
string fileName = path.Substring(0,length-1).Substring(p+1);
DirectoryInfo di = new DirectoryInfo(path);
tn.Text = di.Name;
try
{
foreach (FileSystemInfo var in di.GetFileSystemInfos())
{
TreeNode tn1 = new TreeNode();
if (var is DirectoryInfo)
{
tn1 = FillTreeView(var.FullName, tn1); //递归

}
else
{
tn1.Text = var.Name;
}
tn.ChildNodes.Add(tn1);
}
}
catch { }

return tn;
}
txws1119 2009-02-23
  • 打赏
  • 举报
回复
http://download.csdn.net/source/993835

用的是access数据库,用实例详细展示了如何显示Treeview控件的常见用法,如增,删,改,查, 对于刚刚入门的新手门是绝佳的示例。

PS:右击树节点,进行增,删,改操作
myiiid 2009-02-23
  • 打赏
  • 举报
回复
其中"getFoldersAndFiles(childFolder)"一句就是递归调用.
myiiid 2009-02-23
  • 打赏
  • 举报
回复
真巧,刚刚在做.
private void getFoldersAndFiles(TreeNode tn)
{
string currentPath = tn.FullPath;
//currentPath = currentPath.Remove(0, 5);

// 设置当前文件夹
System.IO.DirectoryInfo folderInfo = new System.IO.DirectoryInfo(currentPath);
System.IO.DirectoryInfo[] folders;
try
{
// 获取当前文件夹下的所有文件夹
folders = folderInfo.GetDirectories();
}
catch
{
return;
}

// 遍历文件夹
foreach (System.IO.DirectoryInfo folder in folders)
{
TreeNode childFolder = new TreeNode(folder.Name);
tn.Nodes.Add(childFolder);
// 递归调用
getFoldersAndFiles(childFolder);
}

// 获得当前文件夹下的所有文件
System.IO.FileInfo[] files;
string searchPattern = "*.xls";
files = folderInfo.GetFiles(searchPattern, SearchOption.TopDirectoryOnly);

foreach (System.IO.FileInfo file in files)
{
// 得到每个文件及图标
TreeNode childFile = new TreeNode(file.Name, 1, 1);
childFile.Tag = "xls file";
tn.Nodes.Add(childFile);
}
}
悔说话的哑巴 2009-02-23
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 uncleson88 的回复:]
什么呀你这。。。。到底想问啥?
[/Quote]
就是
uncleson88 2009-02-23
  • 打赏
  • 举报
回复
什么呀你这。。。。到底想问啥?
genius_tong 2009-02-23
  • 打赏
  • 举报
回复
找了几个,参考一下吧:
http://hi.baidu.com/herowzz/blog/item/805a17d0581ba18ca0ec9cfe.html

http://industry.ccidnet.com/art/1110/20050124/868707_1.html

http://download.csdn.net/down/684909/Drunkard_Faron
麻子Mozart 2009-02-23
  • 打赏
  • 举报
回复
想用递归做。
fenglaijun 2009-02-23
  • 打赏
  • 举报
回复
http://topic.csdn.net/u/20090216/09/d63a88ad-65ad-4bd0-b3a2-d8b0825baf2a.html
看我回的帖子。有几个回复

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧