社区
C#
帖子详情
treeview的问题
jsjhj2008
2008-05-04 08:56:59
在数据库里有这样的一张表:tree,是这样定义的
id pid name
1 1 aa
1 11 bb
1 12 cc
12 121 dd
12 122 ee
要生成
aa
bb
cc
dd
ee
这样的一个树提供的思路啊!最好有源代码
...全文
82
6
打赏
收藏
treeview的问题
在数据库里有这样的一张表:tree,是这样定义的 id pid name 1 1 aa 1 11 bb 1 12 cc 12 121 dd 12 122 ee 要生成 aa bb cc dd ee 这样的一个树提供的思路啊!最好有源代码
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
jsjhj2008
2008-05-04
打赏
举报
回复
我会了,谢谢你们啊
心情解码
2008-05-04
打赏
举报
回复
:)
-
live_7sky
2008-05-04
打赏
举报
回复
[★] VS2005[C#] B/S C/S 运用递归 动态绑定树
=========
今天无意当中翻到了 以前用VS2005 开发的 B/S 动态绑定树的例子..
还是自己的笔记好.一下子 就看懂了..马上又开发了一个 C/S 结构的供大家参考..
前面发过 2 篇关于树的例子..资源管理器还不错..另外一篇就差了..
但是对初学者来说 非常好理解..
另外 B/S 树会刷新..C/S 树也会刷新...为了不让它刷新..添加,修改.删除 节点的时候..树和数据库是独立的..,
就是不用先操作数据库,然后重新绑定..
2者独立操作. 运用BeginUpdate() he EdnUpdate() 防止树刷新...
递归绑定树
这种方法只适合 一个表总的某一列引用自己的主键的情况..
C/S:
//创建根节点
public void BindCategoryTreeVew(TreeView treeView, bool isExpanded, string sSelectedData)
{
//将获取的数据转换为 一个DataTable
DataTable dt=GetCategorys().Tables[0];
treeView.Nodes.Clear();//清空 树的所有节点
//获取与排序顺序中的筛选器以及指定的状态相匹配的所有System.Data.DataRow 数组
DataRow []rowlist=dt.Select("ParentID='-1'");
if (rowlist.Length <= 0) return;
//创建跟节点
TreeNode rootNode = new TreeNode();
//设置根节点的属性
rootNode.Text = rowlist[0]["Desn"].ToString();
//设置根节点的值
rootNode.Text = rowlist[0]["CategoryID"].ToString();
rootNode.Expanded = isExpanded;
rootNode.Selected = true;
//添加跟节点
CategoryView.Nodes.Add(rootNode);
CreateChildNode(rootNode, dt, isExpanded, sSelectedData);
}
private void CreateChildNode(TreeNode parentNode, DataTable dt, bool isExpanded, string sSelecedData)
{
//选择数据,添加排序表达市
DataRow [] rowList = dt.Select("ParentID=" + Convert.ToInt32(parentNode.Value));
foreach (DataRow row in rowList)
{
//创建一个新的节点了
TreeNode node = new TreeNode();
node.Text = row["Desn"].ToString();
node.Value = row["CategoryID"].ToString();
node.Expanded = isExpanded;
if (node.Value == sSelecedData)
{
node.Selected = true;
}
parentNode.ChildNodes.Add(node);
//递归调用,创建其他节点
CreateChildNode(node,dt,isExpanded,sSelecedData);
}
}
B/S:
//创建根节点
public void BindCategoryTreeVew(TreeView treeView, bool isExpanded, string sSelectedData)
{
//将获取的数据转换为 一个DataTable
DataTable dt=GetCategorys().Tables[0];
treeView.Nodes.Clear();//清空 树的所有节点
//获取与排序顺序中的筛选器以及指定的状态相匹配的所有System.Data.DataRow 数组
DataRow []rowlist=dt.Select("ParentID='-1'");
if (rowlist.Length <= 0) return;
//创建跟节点
TreeNode rootNode = new TreeNode();
//设置根节点的属性
rootNode.Text = rowlist[0]["Desn"].ToString();
//设置根节点的值
rootNode.value = rowlist[0]["CategoryID"].ToString();
rootNode.Expanded = isExpanded;
rootNode.Selected = true;
//添加跟节点
CategoryView.Nodes.Add(rootNode);
CreateChildNode(rootNode, dt, isExpanded, sSelectedData);
}
private void CreateChildNode(TreeNode parentNode, DataTable dt, bool isExpanded, string sSelecedData)
{
//选择数据,添加排序表达市
DataRow [] rowList = dt.Select("ParentID=" + Convert.ToInt32(parentNode.Value));
foreach (DataRow row in rowList)
{
//创建一个新的节点了
TreeNode node = new TreeNode();
node.Text = row["Desn"].ToString();
node.Value = row["CategoryID"].ToString();
node.Expanded = isExpanded;
if (node.Value == sSelecedData)
{
node.Selected = true;
}
parentNode.ChildNodes.Add(node);
//递归调用,创建其他节点
CreateChildNode(node,dt,isExpanded,sSelecedData);
}
}
jsjhj2008
2008-05-04
打赏
举报
回复
上面的大哥,真的不太懂你的意思
A1027
2008-05-04
打赏
举报
回复
帮顶!
bestlove2008
2008-05-04
打赏
举报
回复
public void bindtreeview(TreeView treeview, bool isExpand, string sSelectedData)
{
DataTable dataTable = GetDir().Tables[0];
treeview.Nodes.Clear();
DataRow[] rowlist = dataTable.Select("FarentID='1'");
if (rowlist.Length <= 0)
return;
//创建根接点
TreeNode rootnode = new TreeNode();
//设置根接点属性
rootnode.Text = rowlist[0]["name"].ToString();
//设置根接点的key值
rootnode.Value = rowlist[0]["DirID"].ToString();
rootnode.Expanded = isExpand;
rootnode.Selected = true;
//添加根接点
treeview.Nodes.Add(rootnode);
//创建其他接点
CreateChildNode(rootnode, dataTable, isExpand, sSelectedData);
}
private void CreateChildNode(TreeNode parentNode, DataTable dataTable, bool isExpanded, string sSelectdeData)
{
DataRow[] rowlist = dataTable.Select("FarentID='" + parentNode.Value + "'");
foreach (DataRow row in rowlist)
{
//创建新接点
TreeNode node = new TreeNode();
//设置接点属性
node.Text = row["name"].ToString();
node.Value = row["id"].ToString();
node.Expanded = isExpanded;
if (node.Value == sSelectdeData)
{
node.Selected = true;
}
parentNode.ChildNodes.Add(node);
//递归调用 ,创建其他接点
CreateChildNode(node, dataTable, isExpanded, sSelectdeData);
}
}
C# 解决双击
TreeView
表里checkbox本身Bug
问题
除上面这个
问题
外,还有一点,当双击
treeview
的checkbox后,如果再去单击或双击该界面中除这个
treeview
外的任何部分,系统会忽略第一次点击事件。举例来说,一个窗口中,有一个
treeview
,还有一个ok按钮,当我双击...
好看的Winform.
TreeView
自定义的美化
TreeView
源码和对应demo,样式好看,对初学者是很好的学习资料,然后也可用于项目中
毕业设计 基于ASP.NET在线知识管理系统成品课程讲解
该课程中应用到MasterPage模板页、
TreeView
导航控件、用户自定义控件、数据验证控件等ASP.NET服务器端控件。 该课程可以作为课程设计、大作业或毕业设计作品的思路参考。 、注意:学院会员可以免费学习部分课程 ,...
WPF
TreeView
递归异步绑定
1.节点是异步加载的(解决效率
问题
) 2.节点是无限级别的(递归的,这样可复用与目录结构、组织架构等数据类型) 3.节点是可以多选的(用CheckBox选择) 4.XAML方式绑定(减少UI上Code量) 5.方便得获取选中项信息
WPF
TreeView
控件样式
自定义
TreeView
控件样式(自定义节点样式大小、形状)。
C#
110,538
社区成员
642,577
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章