[★] VS2005[C#] B/S C/S 运用递归 动态绑定树
2007-07-04 17:20
337 查看
=========
今天无意当中翻到了 以前用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);
}
}
今天无意当中翻到了 以前用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);
}
}
相关文章推荐
- [C#] B/S C/S 运用递归 动态绑定树
- VS2005[C#] B/S C/S 运用递归 动态绑定树
- Teechart在vs2005中的运用(C#)
- B/S C/S 运用递归 动态绑定树
- Teechart在vs2005中的运用(C#)
- Teechart在vs2005中的运用(C#)
- C#中泛型、程序集一些基本运用(Fifteenth Day)
- 皇后问题之C#版(非递归)
- VS2005(c#)项目调试问题解决方案集锦(转)
- 递归及递归的简单运用之4种方法解斐波那契数列
- C# 算兔子的算法 要求用递归,面试题
- 运用递归生成多级菜单栏
- C# 算兔子的算法 要求用递归
- C#中四种常用集合的运用(非常重要)【转】
- vs2005 C# 接口的使用
- 总结C#正则表达式类的学习及运用
- VS2005(c#)项目调试问题解决方案集锦
- c# fibnacci(递归,迭代)
- 在C#中运用SQLDMO备份和恢复Microsoft SQL Server数据
- 二叉查找树的各项操作(重点是结点的删除部分和递归的运用)