WinForm中TreeView如何绑定数据库??

yang_yifan 2006-11-01 03:30:47
ID NAME PARENTID
1 电器 0
2 电视机 1
3 洗衣机 1
4 冰箱 1

想实现的树是

电器
|
----电视机
----洗衣机
----冰箱

...全文
1099 38 打赏 收藏 举报
写回复
38 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
lovevsnet 2006-11-15
  • 打赏
  • 举报
回复
我写的XmlTreeView for WinForm已经完成,就是在节点增至3000个以上时再增加一节点要化0.5秒左右,有点慢,节点的级数和int一样多(当然我也可改成long int)
螳螂86 2006-11-15
  • 打赏
  • 举报
回复
我相信来CSDN的 朋友们,可以说,,,
至少有一半以上不懂的,,
这个朋友,也是关于无限级分类的,都是说的比较模糊的...
看下我的帖子,还有好多类似我的帖子,,都是没真正了解的!都是模糊概念
http://community.csdn.net/Expert/topic/5158/5158852.xml?temp=.7078668
http://community.csdn.net/Expert/topic/5158/5158877.xml?temp=.5437586

我帖子上面2个朋友发出来了那2部分代码确实不错!
可以实现,但是我是真的怎么调都没成功......或许是我不行吧....但是我会认真对待的
....没有详细的理解,,,,

象我一样只是了解表面而已!!!我可以说楼主,,到目前为止还是没有懂无限分类的真正的用法.

没有真正的理解叫程序员???

说实在的,我搞不懂之前,,我会在这里一直等下去的!!!
losedxyz 2006-11-15
  • 打赏
  • 举报
回复
mark
CN_Azure 2006-11-08
  • 打赏
  • 举报
回复
XML是挺好的.只是好象用的人还不是那么多
AllenIverson 2006-11-03
  • 打赏
  • 举报
回复
学习了
yuzhlhua 2006-11-03
  • 打赏
  • 举报
回复
mark 想找个好方法.
yang_yifan 2006-11-03
  • 打赏
  • 举报
回复
奇怪。为什么呢?应该是填充Dataset的时候出了问题
lovevsnet 2006-11-03
  • 打赏
  • 举报
回复
强烈建议兄弟们自己写xmlTreeView组件
目前我写好的基本上能满足你的要求,但还有BUG
我在:http://community.csdn.net/Expert/topic/5096/5096131.xml?temp=.3367731#top
也建议用自己写组件,不过大多数人还是没理解XML带来的好处
yang_yifan 2006-11-03
  • 打赏
  • 举报
回复
头疼。。。两天了还没解决,我试了好多方法.总是找不到到底哪里出错了
Knight94 2006-11-02
  • 打赏
  • 举报
回复
ParentID是什么类型的
qiufas 2006-11-02
  • 打赏
  • 举报
回复
现在有成型的例子了么?有的话发一份,我正在研究
qiufa_68@163.com 谢谢
wuhuiITren 2006-11-02
  • 打赏
  • 举报
回复
mark
yang_yifan 2006-11-02
  • 打赏
  • 举报
回复
ID NAME PARENTID
1 电器 0
2 电视机 1
3 洗衣机 1
4 冰箱 1

连接字符串
OracleConnection OConn = new OracleConnection("User Id=MyID;PassWord=MyPass;Data Source=192.168.2.1:1521/MyData;");
这个是表结构.是不是我在填充数据的时候出了错?
HSB19820706 2006-11-02
  • 打赏
  • 举报
回复
先看看数据查出来对不对
CN_Azure 2006-11-02
  • 打赏
  • 举报
回复
再过来看看.
yang_yifan 2006-11-02
  • 打赏
  • 举报
回复
Knight94(愚翁)我看了你写的,也按照你写的方式写了.但读取出来只有一个跟父结点

private DataTable CreateTable()
{
try
{
OConn.Open();//打开数据库连接
OracleDataAdapter da = new OracleDataAdapter("select * from Mytable",OConn);//建立数据适配器
da.Fill(dt);//进行数据填充
return dt;//返回一个数据表dt
}catch(Exception ex)
{
throw(ex);
}finally
{
OConn.Close();
}
}
private void CreateTree()
{

DataRow[] drArray = dt.Select("ParentID=0",

"ParentID ASC",

DataViewRowState.CurrentRows);

if (drArray.Length == 0) return;



TreeNode tnNew = null;

foreach (DataRow dr in drArray)
{

tnNew = treeView1.Nodes.Add(dr["NAME"].ToString());

tnNew.Tag = dr["ID"].ToString();//Save "EmployeeID" in node's tag

CreateTreeNode(ref tnNew);

}

}



private void CreateTreeNode(ref TreeNode tnParent)
{

//Get children data info

DataRow[] drArray = dt.Select(

string.Format("ParentID = {0}", tnParent.Tag),

"ParentID ASC",

DataViewRowState.CurrentRows);

if (drArray.Length == 0) return;



TreeNode tnNew = null;

foreach (DataRow dr in drArray)
{

tnNew = tnParent.Nodes.Add(dr["NAME"].ToString());

tnNew.Tag = dr["ID"].ToString();//Save "EmployeeID" in node's tag

CreateTreeNode(ref tnNew);

}

}

请指教
gb_boy 2006-11-02
  • 打赏
  • 举报
回复
mark
chaney 2006-11-02
  • 打赏
  • 举报
回复
递归就是速度慢了。一个只有48条记录的表,生成3级的树竞要花2、3秒左右。。。
当然我是直接在库里读的。如果先放到dataTable里可能会好些?
yang_yifan 2006-11-02
  • 打赏
  • 举报
回复
dt为{},而drArray为{维数:[1]}
Knight94 2006-11-02
  • 打赏
  • 举报
回复
这就很怪了,你单步调试,看看dt.Select后的结果是什么
加载更多回复(18)
发帖
C#

10.8w+

社区成员

.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
帖子事件
创建了帖子
2006-11-01 03:30
社区公告

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