winform中的TreeView的数据绑定#region绑定TreeView
///<summary>
///绑定TreeView(利⽤TreeNode)
///</summary>
///<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>
protected void Bind_Tv(DataTable dt, TreeNode p_Node, string pid_val, string id, string pid, string text)
{
DataView dv = new DataView(dt);//将DataTable存到DataView中,以便于筛选数据
TreeNode tn;//建⽴TreeView的节点(TreeNode),以便将取出的数据添加到节点中
//以下为三元运算符,如果⽗id为空,则为构建“⽗id字段 is null”的查询条件,否则构建“⽗id字段=⽗id字段值”的查询条件string filter = string.IsNullOrEmpty(pid_val) ? pid + " is null" : string.Format(pid + "='{0}'", pid_val);
dv.RowFilter = filter;//利⽤DataView将数据进⾏筛选,选出相同⽗id值的数据
foreach (DataRowView row in dv)
{
tn = new TreeNode();//建⽴⼀个新节点(学名叫:⼀个实例)
if (p_Node == null)//如果为根节点
{
tn.Name = row[id].ToString();//节点的Value值,⼀般为数据库的id值
tn.Text = row[text].ToString();//节点的Text,节点的⽂本显⽰
TreeView1.Nodes.Add(tn);//将该节点加⼊到TreeView中winform增删改查简单案例
Bind_Tv(dt, tn, tn.Name, id, pid, text);//递归(反复调⽤这个⽅法,直到把数据取完为⽌)
}
else//如果不是根节点
{
tn.Name = row[id].ToString();//节点Value值
tn.Text = row[text].ToString();//节点Text值
p_Node.Nodes.Add(tn);//该节点加⼊到上级节点中
Bind_Tv(dt, tn, tn.Name, id, pid, text);//递归
}
}
}
///<summary>
///绑定TreeView(利⽤TreeNodeCollection)
///</summary>
///<param name="tnc">TreeNodeCollection(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(DataTable dt, TreeNodeCollection tnc, string pid_val, string id, string pid, string text)
{
DataView dv = new DataView(dt);//将DataTable存到DataView中,以便于筛选数据
TreeNode tn;//建⽴TreeView的节点(TreeNode),以便将取出的数据添加到节点中
//以下为三元运算符,如果⽗id为空,则为构建“⽗id字段 is null”的查询条件,否则构建“⽗id字段=⽗id字段值”的查询条件string filter = string.IsNullOrEmpty(pid_val) ? pid + " is null" : string.Format(pid + "='{0}'", pid_val);
dv.RowFilter = filter;//利⽤DataView将数据进⾏筛选,选出相同⽗id值的数据
foreach (DataRowView drv in dv)
{
tn = new TreeNode();//建⽴⼀个新节点(学名叫:⼀个实例)
tn.Name = drv[id].ToString();//节点的Value值,⼀般为数据库的id值
tn.Text = drv[text].ToString();//节点的Text,节点的⽂本显⽰
tnc.Add(tn);//将该节点加⼊到TreeNodeCollection(节点集合)中
Bind_Tv(dt, tn.Nodes, tn.Name, id, pid, text);//递归(反复调⽤这个⽅法,直到把数据取完为⽌)
}
}
#endregion
绑定代码:
Bind_Tv(datatable,TreeView1.Nodes, null, "id字段", "⽗id字段", "名称字段");
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论