关于combobox如何递归显示树效果
2009-05-14 12:45
316 查看
http://community.csdn.net/Expert/topic/5229/5229675.xml?temp=.3458063
bm数据表结构:ID Name PID
首先先了解一下,树的种类:
一.只用空格,或者其他相同的符号显示简单树结构,如:
文科
语文
作文
阅读
英语
口语
书面语
理科
物理
化学
综合科
二.用不同符号,显示树结构,并且用空格使得子节点向右移一格.如:
文科
┣语文
┗英语
理科
┣物理
┗数学
三.用不同符号,显示树结构,并且判断是否有下一级同等级的节点,如有的话,用"┃
"连接.如:
文科
┃┣语文
┃┃┣阅读
┃┃┗作文
┃┗英语
理科
┗物理
┗数学
四.用不同符号,显示树结构,并且判断是否有下一级节点,如有,前面显示"+",如没
有,前面显示"-",再判断是否有下一级同等级的节点,如有的话,用"┃"连接.如:
+文科
┃┣+语文
┃┃ ┣-阅读
┃┃ ┗-作文
┃┗-英语
+理科
┣-物理
┗-数学
下面是四种的实现方法:
第一种:第一种是最简单的,下面先来实现第一种效果,其他的随后慢慢补上
//首先创建datatable
public DataView drv(string query)
{
OleDbConnection conn = new OleDbConnection();
conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\\xcrs.mdb";
conn.Open();
OleDbDataAdapter adp = new OleDbDataAdapter(query, conn);
DataSet ds = new DataSet();
adp.Fill(ds, "bm");
return ds.Tables["bm"].DefaultView;
conn.Close();
conn.Dispose();
}
//接下是通过数据表递归加载
/// <summary>
/// 递归显示-treeview效果模仿
/// 调用方法:
/// dv = drv("select * from bm");
/// dv.Sort = "PID ASC";
/// CreateTree(treeview控件ID,Dataview)
/// </summary>
/// <param name="trvDBBinding">需要绑定的treeview控件名称</param>
/// <returns>结果</returns>
public void CreateComboboxTree(ComboBox trvDBBinding, DataView dv)
{
DataRowView[] arrDRV = dv.FindRows(0);//Get root data info
int tnNew;
if (arrDRV.Length == 0) return;
foreach (DataRowView dr in arrDRV)
{
trvDBBinding.Items.Add(dr["Name"].ToString());
tnNew=Convert.ToInt32(dr["ID"]);
CreateComboboxTreeNode(trvDBBinding, ref tnNew, dv, " ");
}
}
/// <summary>
/// 递归显示-其他控件treeview效果模仿
/// 树连接数据库------子节点
/// </summary>
/// <param name="tnParent">父ID</param>
/// <returns>结果</returns>
public void CreateComboboxTreeNode(ComboBox trvDBBinding,ref int tnParent, DataView dv,string strfill)
{
DataRowView[] arrDRV = dv.FindRows(tnParent);//Get children data info
int tnNew;
foreach (DataRowView dr in arrDRV)
{
trvDBBinding.Items.Add(strfill + dr["Name"].ToString());
tnNew = Convert.ToInt32(dr["ID"]);
CreateComboboxTreeNode(trvDBBinding, ref tnNew, dv, strfill + " ");
}
}
调用方法:
在form_load 事件中写:
[align=left] DataView dv = drv("select * from bm");[/align]
[align=left] dv.Sort = "PID ASC"; //pai xu[/align]
CreateComboboxTree(this.comboBox1, dv);
相关文章推荐
- 于combobox如何递归显示树效果
- Winform中如何实现下拉树效果(类似于ComboBox下拉时显示的是树状结构)
- 向大家请教一个关于sharepoint2003的问题,如何使一个Custom List in Datasheet View中某个field从其他list抽取数据当显示时?
- 基于JS如何实现类似QQ好友头像hover时显示资料卡的效果(推荐)
- 关于在eclipse如何将velocity当做html进行高亮显示
- swing登陆程序的异步loading效果,避免程序假死状态?swing 后台操作事件长 , 界面如何显示正在等待?
- 关于如何在MFC框架里面显示多个数据总结
- 关于.net winform ComboBox数据绑定显示问题
- android关于代码正确但是运行不显示相应的效果的原因
- 如何丰富alt属性的显示效果
- 如何解决关于TableView里面cell随机显示的问题
- 关于CSS Tooltips(鼠标经过时显示)的效果
- 如何使VNC和Linux tty7 显示同步效果
- [Unity 3D教程]教你如何在3D场景中选择物体并显示轮廓效果
- 界面美化之如何在关于对话框中添加荣誉效果框
- 关于如何显示tomcat未显示的启动异常
- 浅析如何将C#数据查询结果放进Combobox中显示
- 关于readystate==1状态下的ajax效果不能显示的问题的解决
- 如何查看github的html页面显示效果
- 关于如何在ubuntu中设置apache显示GB2312的方法