treeview控件绑定数据,wpf treeview数据绑定

treeview控件绑定数据,wpf treeview数据绑定,详解TreeView绑定数据库

本文主要演示TreeView如何绑定到数据库。

许多应用程序使用TreeView来显示组织。下面演示了TreeView如何绑定到数据库。

数据库结构如下(递归现实):

id(guid) pid(guid)名称

18A 83618-8751-47EF-91a 0-e 2 dcde 42 bb 71 * *公司

c775c 004-48ED-4664-8B0C-8fd 26 FEA 5 f 4 E18A 83618-8751-47EF-91a 0-e 2 dcde 42 bb 71 a部门

a 43696 f 0-A906-4B4A-8 abf-a01f b 7d 54 daf c 775 c 004-48ED-4664-8B0C-8fd 26 FEA 5 f 4 EA部门-1团队

0d 7 FB 83 A-c056-482 e-800 b-52e 20 c 74791 b c 775 c 004-48ed-4664-8b0c-8fd 26 FEA 5 f 4e A部-2队

de 28685 a-AAFF-4876-Abe 1-bb 003d 17 db 6418 a 83618-8751-47EF-91a 0-e 2 dcde 42 bb 71 b部门

绑定到TreeView的最终效果如下:

1、新建一个TreeView控件

二、绑定

2.1 传统做法(行不通)

2.2 正确做法:自己建立一个递归的方法。

2.2.1 递归其实就是方法的重复调用,下面是我总结的两种方法。新手不懂代码也没关系,直接抄下来用就行了。

#区域绑定树视图

///摘要

///绑定TreeView(带有TreeNode)

////摘要

///param name=' p _ node ' treenode(treeview的节点)/param

///param name='pid_val '父id的值/param

///param name='id '数据库id字段名/param

///param name='pid '数据库父id字段名/param

///param name='text '数据库文本字段值/param

受保护的void Bind_Tv(数据表dt,树节点p_Node,字符串pid_val,字符串id,字符串pid,字符串文本)

{

DataView dv=新数据视图(dt);//将数据表保存在DataView中,以便于数据过滤

TreeNode tn//建立TreeView的节点,将检索到的数据添加到节点中。

//以下是三元运算符。如果父id为空,则是“父id字段为空”的查询条件;否则为“父id字段=父id字段值”的查询条件

字符串过滤器=字符串。IsNullOrEmpty(pid_val)?pid“为空”:字符串。格式(pid '='{0} ',PID _ val);

dv。RowFilter=filter//使用DataView过滤数据,选择父id值相同的数据。

foreach(dv中的DataRowView行)

{

TN=new TreeNode();//创建新节点(学名:实例)

If (p_Node==null)//如果是根节点

{

tn。值=行[id]。ToString();//节点的值,一般是数据库的id值

tn。Text=row[text]。ToString();//节点的文本,以及节点的文本显示

树形视图1。nodes . Add(TN);//将此节点添加到TreeView

Bind_Tv(dt,tn,tn。值、id、pid、文本);//递归(重复调用此方法,直到获取数据)

}

否则//如果它不是根节点

{

tn。值=行[id]。ToString();//节点值值

tn。Text=row[text]。ToString();//节点文本值

p_Node。child nodes . Add(TN);//将此节点添加到上级节点。

Bind_Tv(dt,tn,tn。值、id、pid、文本);//递归

}

}

}

///摘要

///绑定TreeView(使用TreeNodeCollection)

////摘要

///param name=' TNC ' treenode collection(treeview的节点集合)/param

///param name='pid_val '父id的值/param

///param name='id '数据库id字段名/param

///param name='pid '数据库父id字段名/param

///param name='text '数据库文本字段值/param

private void Bind_Tv(数据表dt,TreeNodeCollection tnc,字符串pid_val,字符串id,字符串pid,字符串text)

{

DataView dv=新数据视图(dt);//将数据表保存在DataView中,以便于数据过滤

TreeNode tn//建立TreeView的节点,将检索到的数据添加到节点中。

//以下是三元运算符。如果父id为空,则是“父id字段为空”的查询条件;否则为“父id字段=父id字段值”的查询条件

字符串过滤器=字符串。IsNullOrEmpty(pid_val)?pid“为空”:字符串。格式(pid '='{0} ',PID _ val);

dv。RowFilter=filter//使用DataView过滤数据,选择父id值相同的数据。

foreach(dv中的数据视图驱动程序)

{

TN=new TreeNode();//建立一个新节点(学名叫:一个实例)

tn .Value=drv[id].ToString();//节点的价值值,一般为数据库的身份证明(识别)值

tn .Text=drv[text].ToString();//节点的文字,节点的文本显示

跨国公司.加(TN);//将该节点加入到TreeNodeCollection(节点集合)中

Bind_Tv(dt,tn .田纳西州子节点.值、id、pid、文本);//递归(反复调用这个方法,直到把数据取完为止)

}

}

#结束区域

2.2.2 调用

2.2.3 关于数据

—》测试数据(作用:模拟一个真实的数据库表),这个方法的作用是建立一个表,表中有三个字段,分别为身份证,父身份证,名称,然后往里面插入些数据。

私有数据表测试表()

{

DataTable dt=new DataTable();

数据行dr

dt .列。Add(新的DataColumn('id ',类型为(Guid)));//id列类型全局唯一标识符

dt .列。Add(新的DataColumn(' parent _ id ',type of(Guid)));//父身份证明(识别)列类型全局唯一标识符

dt .列。Add(新的DataColumn(' name ',type of(string)));//名称列类型线

//构造公司根节点

dr=dt .NewRow();

var node0=dr[0]=Guid .新的guid();

dr[1]=DBNull .价值;

博士[2]='**公司;

dt .行。添加(dr);

//构造部门节点

字符串[]部门={ 'A部门,' B部门,' C部门'};

for(int I=0;我部门。长度;i ) {

dr=dt .NewRow();

var node1=dr[0]=Guid .新的guid();

dr[1]=节点0;//(部门节点)属于公司根节点

博士[2]=部门[I];

dt .行。添加(dr);

//构造班组节点

for(int j=1;j 4;j)

{

dr=dt .NewRow();

dr[0]=Guid .新的guid();

dr[1]=节点1;

博士[2]=j '班组;

dt .行。添加(dr);

}

}

返回dt;

}

—》真实数据我们要在数据库中建立三个字段分别为身份证,父身份证,名称,然后向里面插入数据,需要注意的就是第一行数据的父身份证明(识别)要设置为空。

然后调用如下方法把数据库中的数据取出。

///摘要

///取出数据库中数据,生成数据表

////摘要

///param name='str_Con '数据库连接/param

///param name='str_Cmd'sql语句/param

///返回/返回

私有数据表exe_Table(字符串str_Con,字符串str_Cmd)

{

数据集ds=新数据集();

using(Oracle连接连接=新的Oracle连接(str _ Con))

{

using(Oracle dataadapter ODA=new Oracle dataadapter(str _ Cmd,conn))

{

conn . Open();

官方发展援助.填充(ds);

}

}

返回ds .表[0];

}

最后在!IsPostBack中调用

如果(!IsPostBack)

{

Bind_Tv(exe_Table('连接字符串,' select * from表),树形视图1 .节点,空,' id字段', '父身份证明(识别)字段', '名称字段');

}

以上就是本文的全部内容,希望对大家熟练掌握树形视图绑定数据库有所帮助。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: