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

添加人:admin三级(1328分)   添加时间:2007-07-04    阅读次数:1965  收藏此教程
今天无意当中翻到了 以前用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);
    }
}

1页 第1上一页1下一页
相关的教程: 递归 绑定树 TreeView
收藏此教程

当前平均分: -5.0(1 次打分)

-5-4-3-2-1012345
评论主题
您的大名
您的评论
验证码 点击换一个验证码
知识库搜索: