问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

vs2010中treeview控件绑定数据winform界面怎么绑定?要求有例子和代码

发布网友 发布时间:2022-04-27 12:51

我来回答

1个回答

热心网友 时间:2022-04-27 14:21

官方版本treeview的确比较麻烦,没有提供对应的数据源绑定功能,一般需要递归遍历(WPF下好点有所谓的MVVM,提供了一个treeview专用的数据接口,你ViewModel里实现这个接口就可以直接绑定),非官方的treeview控件一般有数据绑定扩展,比如radtreeview。

我在net4下写了两个扩展,你看着用把

namespace Hycommon
{
public static class TreeViewEx
{

//对已经实现层级组件模式的数据操作
public static void makeTreeView<T, TNode>(this IEnumerable<T> list,//层级数据源
IEnumerable tds, //treeview节点集合,也就是Treeview.nodes
Func<T, IEnumerable<T>> funSource, //因为数据本身具有层级,所以需要知道如何访问下级数据
Func<T, TNode> funConvert, //把T数据绑定到treenode上
Func<TNode, IEnumerable> ChirldFun //如何访问treenode的子节点
)
{
foreach (var item in list)
{
TNode td = funConvert(item);
var source = funSource(item);
dynamic d_tds = tds;
d_tds.Nodes.Add(td);
source.makeTreeView(ChirldFun(td), funSource, funConvert, ChirldFun);
}

}

//对非层级组件数据操作
public static void makeTreeView<TSource, TID, TNode>(
this IEnumerable<TSource> list,//原始数据源
IEnumerable tds, //treeview节点集合

Func<TSource, TID> FunID, //获取数据id
Func<TSource, TID> funParentID,//获取父节点编号
Func<TSource, TNode> funConvert, //转换为treenode
Func<TNode, IEnumerable> ChirldFun,//如何访问treenode的下级节点集合
decimal parentId = 0 //初始访问节点,默认为0
) where TID : struct
{

var tlist = list.Where(c => Convert.ToDecimal(funParentID(c)) == parentId);
foreach (var item in tlist)
{
TNode td = funConvert(item);
dynamic d_tds = tds;
d_tds.Nodes.Add(td);
list.makeTreeView(ChirldFun(td), FunID, funParentID, funConvert, ChirldFun,Convert.ToDecimal(FunID(item)));
}

}

}
}

调用方式
//层级数据调用
List<T> x=new List<T>();
x.makeTreeView<T,TreeNode>(Treeview1.Nodes,p=>p.Chirlds,p=>new TreeNode(){Text=p.name,Tag=p},p=>p.Nodes);

非层级调用

List<T> x=new List<T>();
x.makeTreeView(treeview1.Nodes,p=>p.id,p=>p.parentid,p=>new treenode(){Text=p.name,Tag=p},p=>p.Nodes,0)追问老大 我只需要绑定Sql数据库的表就行了 别给我这么麻烦的啊

追答呵呵,绑定数据库表你就用第二个非层级数据即可

你总有id,和父id两个字段把,按上面的调用改就是

datatable dt=new datatable() //怎么获取数据到dt不用我写把

dt.AsEnumerable().makeTreeView(treeview1.Nodes,p=>Convert.ToInt32(p["id"]),p=>Convert.ToInt32(p.parentid),p=>new treenode(){Text=p["需要显示的字段"],Tag=p},p=>p.Nodes,0)

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
梦见死人活了腿上都是浓泡? 佛山市南海区里水镇怎么坐车去广东省广州市白云区同和镇元下田福泰... 电加热宝加水要注意什么? 电热宝如何放气 谁知道静雅思听中《寻访二战德国兵02:保卫祖国》的背景音乐 为什么我的ios8.02要1.7G? 华硕游戏笔记与普通笔记本有什么区别 朴智妍荣誉记录 朴智妍艺术贡献的电影 5升级Ios8.0.2怎么样 EF70-300 EF 70-200F4L 选哪个比较合适 佳能镜头70-200F4与70-300 F4-5.6 IS USM那个拍摄效果好些? 佳能70-200和佳能70-300选择哪款 丙氨酸氨基转移酶73.7偏高,谷酰转肽酶85偏高,胆碱酯酶11437偏高 胆碱酯酶高与我爱生吃红薯有关系吗 胆碱酯酶高应注意什么 胆碱酯酶高170 胆碱酯酶偏低,应该吃什么 请问胆碱脂酶偏高是什么原因 asp.net将treeview绑定到数据库,单击某节点将对应的该行数据中的某个字段绑定到文本框中? 局中人更新时间 局中人曼丽走是哪一级? 问道武当的背景音乐 中央10台《问道武当》的全部配乐? 局中人沈伯年死在第几集? 央视 问道武当 的背景音乐 配乐 叫什么啊 出彩中国人蒙眼平衡术背景音乐 问道武当里面的配乐叫什么名字? 什么是玻璃钢喷涂,玻璃钢喷涂有什么优缺点 .NET里的TreeView怎么实现动态绑定? 发动机故障灯亮,但从新起动又不亮了是什么原因 asp.net treeview绑定数据库的问题。 上海随训通与字节跳动是什么关系 苏州新材料研究所有限公司怎么样? 苏州市星辰新材料集团待遇怎么样? 我们就两个人想到苏州和周边玩一圈,但是对苏州不熟悉,吃住行都比较麻烦,请各位大哥大姐们给点建议. 苏州富雅达新材料科技有限公司怎么样? 苏州汉丰新材料股份有限公司怎么样? 夏蓝-民歌缘APE+CUE所有的歌曲,求百度网盘下载资源 化粪池是什么材料 玻璃钢化粪池的材料组成一般有什么? 无损ape音乐文件可以在哪里免费下载? 求高手帮我写一个菜单TreeView绑写数据库 by:asp.net(C#) 草莓应该在哪个时期用高钾肥呀,第一次种植没有经验。 男生说第一次被女生种草莓,是男生第一次谈恋爱吗? 拜托各位大神帮我,第一次种了点草莓,感觉这盆草莓生病了,但是不知道是什么病?应该怎么治? 这个我第一次种草莓我有一些问题在请各位帮一帮 洗米水可以做草莓的肥料吗?草莓的叶子会什么会变*了? 双羽 下面一个立 什么字 asp.net Treeview控件,确定是三级目录,怎样绑定数据。 五行大陆的内容简介