关闭

VS2005[C#] B/S C/S 运用递归 动态绑定树

487人阅读 评论(0) 收藏 举报
今天无意当中翻到了 以前用VS2005 开发的 B/S 动态绑定树的例子..
还是自己的笔记好.一下子 就看懂了..马上又开发了一个 C/S 结构的供大家参考..
前面发过 2 篇关于树的例子..资源管理器还不错..另外一篇就差了..
但是对初学者来说 非常好理解..

另外 B/S 树会刷新..C/S 树也会刷新...为了不让它刷新..添加,修改.删除 节点的时候..树和数据库是独立的..,
就是不用先操作数据库,然后重新绑定..
2者独立操作. 运用BeginUpdate() he EdnUpdate() 防止树刷新...

递归绑定树
这种方法只适合 一个表总的某一列引用自己的主键的情况..
C/S:
 //创建根节点
    public void BindCategoryTreeVew(TreeView treeView, bool isExpanded, string sSelectedData)
    {
        //将获取的数据转换为 一个DataTable
        DataTable dt=GetCategorys().Tables[0];
        treeView.Nodes.Clear();//清空 树的所有节点
        //获取与排序顺序中的筛选器以及指定的状态相匹配的所有System.Data.DataRow 数组
        DataRow []rowlist=dt.Select("ParentID='-1'");
        if (rowlist.Length <= 0) return;
        //创建跟节点
        TreeNode rootNode = new TreeNode();
        //设置根节点的属性
        rootNode.Text = rowlist[0]["Desn"].ToString();
        //设置根节点的值
        rootNode.Text = rowlist[0]["CategoryID"].ToString();
        rootNode.Expanded = isExpanded;
        rootNode.Selected = true;
        //添加跟节点
        CategoryView.Nodes.Add(rootNode);
        CreateChildNode(rootNode, dt, isExpanded, sSelectedData);

     }
    private void CreateChildNode(TreeNode parentNode, DataTable dt, bool isExpanded, string sSelecedData)
    {
        //选择数据,添加排序表达市
        DataRow [] rowList = dt.Select("ParentID=" + Convert.ToInt32(parentNode.Value));
        foreach (DataRow row in rowList)
        {
            //创建一个新的节点了
            TreeNode node = new TreeNode();
            node.Text = row["Desn"].ToString();
            node.Value = row["CategoryID"].ToString();
            node.Expanded = isExpanded;
            if (node.Value == sSelecedData)
            {
                node.Selected = true;
            }
            parentNode.ChildNodes.Add(node);
            //递归调用,创建其他节点
            CreateChildNode(node,dt,isExpanded,sSelecedData);
        }
    }
B/S:
  //创建根节点
    public void BindCategoryTreeVew(TreeView treeView, bool isExpanded, string sSelectedData)
    {
        //将获取的数据转换为 一个DataTable
        DataTable dt=GetCategorys().Tables[0];
        treeView.Nodes.Clear();//清空 树的所有节点
        //获取与排序顺序中的筛选器以及指定的状态相匹配的所有System.Data.DataRow 数组
        DataRow []rowlist=dt.Select("ParentID='-1'");
        if (rowlist.Length <= 0) return;
        //创建跟节点
        TreeNode rootNode = new TreeNode();
        //设置根节点的属性
        rootNode.Text = rowlist[0]["Desn"].ToString();
        //设置根节点的值
        rootNode.value = rowlist[0]["CategoryID"].ToString();
        rootNode.Expanded = isExpanded;
        rootNode.Selected = true;
        //添加跟节点
        CategoryView.Nodes.Add(rootNode);
        CreateChildNode(rootNode, dt, isExpanded, sSelectedData);

     }
    private void CreateChildNode(TreeNode parentNode, DataTable dt, bool isExpanded, string sSelecedData)
    {
        //选择数据,添加排序表达市
        DataRow [] rowList = dt.Select("ParentID=" + Convert.ToInt32(parentNode.Value));
        foreach (DataRow row in rowList)
        {
            //创建一个新的节点了
            TreeNode node = new TreeNode();
            node.Text = row["Desn"].ToString();
            node.Value = row["CategoryID"].ToString();
            node.Expanded = isExpanded;
            if (node.Value == sSelecedData)
            {
                node.Selected = true;
            }
            parentNode.ChildNodes.Add(node);
            //递归调用,创建其他节点
            CreateChildNode(node,dt,isExpanded,sSelecedData);
        }
    }

 
0
0

猜你在找
【直播】机器学习&数据挖掘7周实训--韦玮
【套餐】系统集成项目管理工程师顺利通关--徐朋
【直播】3小时掌握Docker最佳实战-徐西宁
【套餐】机器学习系列套餐(算法+实战)--唐宇迪
【直播】计算机视觉原理及实战--屈教授
【套餐】微信订阅号+服务号Java版 v2.0--翟东平
【直播】机器学习之矩阵--黄博士
【套餐】微信订阅号+服务号Java版 v2.0--翟东平
【直播】机器学习之凸优化--马博士
【套餐】Javascript 设计模式实战--曾亮
查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:384524次
    • 积分:7168
    • 等级:
    • 排名:第3103名
    • 原创:325篇
    • 转载:71篇
    • 译文:1篇
    • 评论:34条
    最新评论