您的位置:首页 > 其它

B/S C/S 运用递归 动态绑定树

2011-08-26 13:07 176 查看
今天无意当中翻到了 以前用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);

}

}

posted
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: