WPF中Treeview绑定数据库数据
来源:互联网 发布:网络舆情培训 编辑:程序博客网 时间:2024/05/16 05:34
WPF遍历所有的节点其实和Winform的一样,都是从跟级开始读:这个是我写的一个类,明天在写出来添加删除的来:
class BindTreeView { private DataTable dt; private string sql = ""; DBHealper db = new DBHealper();//连接数据库的类 /// 2012-02-24 By Dawn /// <summary> /// 从数据库中读取数据填充Treeview的父节点 /// </summary> /// <param name="tr">读取数据的Treeview</param> public void TreeViewBind(TreeView tr) { tr.Items.Clear();//先清理一下节点 sql = "select * from Node where NodeVisble=1";//我要读的节点 NodeVisble自己定义的是否显示节点 1为显示 dt = db.ExecuteSqlDS(sql); //这个不用关心,执行sql语句的嘛 if (dt != null || dt.Rows.Count > 0) //判断一线有没有数据 { //首先遍历父节点 TreeViewItem item;//wpf不再是节点了 改成item 其实是一样的 DataRow[] dr = dt.Select("ParentID='0'"); //判断一下啊 ,我用ParentID(父节点的值)这个是我定义好的要根据 // 这个读父节点的 if (dr.Length != 0) { foreach (DataRow drTemp in dr) { item = new TreeViewItem(); item.Tag = drTemp["ID"].ToString(); //一般绑定ID item.Header = drTemp["NodeName"].ToString(); //名称 tr.Items.Add(item); item.IsExpanded = true; BindNode(item); } } } } /// <summary> /// 遍历所有的子节点 /// </summary> /// <param name="item">父节点的item</param> private void BindNode(TreeViewItem item) { DataRow[] dr = dt.Select("ParentID = '" + item.Tag + "'"); //查询子节点条件 if (dr.Length > 0) foreach (DataRow drTemp in dr) { TreeViewItem childItem = new TreeViewItem(); childItem.Header = drTemp["NodeName"].ToString(); childItem.Tag = drTemp["ID"].ToString(); //node.ChildNodes.Add(node); item.Items.Add(childItem); item.IsExpanded = true; BindNode(childItem); } } }