TreeView 后台加载
来源:互联网 发布:文章发布系统源码 编辑:程序博客网 时间:2024/05/22 17:34
TreeView控件是.NET自带的一个树形菜单控件,使用非常简单。
论坛里有朋友问到了如何通过后台动态加载TreeView,手头正好刚写完一个,顺便贴出来。
不好的地方大家见谅!
应用表结构:
比如一个TreeView的样子是下边的:
仓库
¦--添加仓库
¦--编辑仓库
财务
¦--入账
¦--出帐
查询
那么MenuTitle表保存的就是"仓库,财务,查询"这些根节点
MenuDetail保存的就是"添加仓库,编辑仓库,入账,出帐"这些子节点
它们之间用ID关联
MenuTitle表的结构:
ID{主键}
Title{主节点名称}
MenuDetail表的结构:
Did{主键}
ID{外键}
DTitle{子节点名称}
读取想要加载到TreeView的菜单项目
private void GetDataSet()
...{
try
...{
string constr = System.Configuration.ConfigurationManager.ConnectionStrings["LocalSqlServer"].ConnectionString;
SqlConnection conn = new SqlConnection(constr);
conn.Open();
string comstr = "Select * from MenuTitle";
SqlDataAdapter sda = new SqlDataAdapter(comstr, conn);
sda.Fill(ds, "table1");
comstr = "Select * from MenuDetail";
sda = new SqlDataAdapter(comstr, conn);
sda.Fill(ds, "table2");
conn.Close();
}
catch (Exception ex)
...{
Console.Write("读取菜单错误");
}
}
加载根节点
private void initRoot(TreeView tnd)
...{
try
...{
DataView dv = new DataView();
TreeNode tmpnd;
dv.Table = ds.Tables["table1"];
foreach (DataRowView drv in dv)
...{
tmpnd = new TreeNode();
tmpnd.Value = drv["ID"].ToString();
tmpnd.Text = drv["Title"].ToString();
tnd.Nodes.Add(tmpnd);
tmpnd.PopulateOnDemand = true;
tmpnd.SelectAction = TreeNodeSelectAction.Expand;
}
}
catch (Exception ex)
...{
Console.Write("读取根节点错误");
}
}
加载子节点
private void AddChildNodes(TreeNode nds)
...{
try
...{
DataView dv = new DataView();
TreeNode tmpnd;
dv.Table = ds.Tables["table2"];
dv.RowFilter = "ID=" + nds.Value.ToString() + "";
foreach (DataRowView drv in dv)
...{
tmpnd = new TreeNode();
tmpnd.Value = drv["Did"].ToString();
tmpnd.Text = drv["DTitle"].ToString();
nds.ChildNodes.Add(tmpnd);
tmpnd.PopulateOnDemand = true;
if (nds.ChildNodes.Count != 0)
...{
tmpnd.SelectAction = TreeNodeSelectAction.Expand;
}
}
}
catch (Exception ex)
...{
Console.Write("读取子节点错误");
}
}
在Page_Load里遍历一下
...{
GetDataSet();
initRoot(TreeView1)
foreach(TreeNode tn in TreeView1.Nodes)
...{
AddChildNodes(tn);
}
}
private void GetDataSet()
...{
try
...{
string constr = System.Configuration.ConfigurationManager.ConnectionStrings["LocalSqlServer"].ConnectionString;
SqlConnection conn = new SqlConnection(constr);
conn.Open();
string comstr = "Select * from MenuTitle";
SqlDataAdapter sda = new SqlDataAdapter(comstr, conn);
sda.Fill(ds, "table1");
comstr = "Select * from MenuDetail";
sda = new SqlDataAdapter(comstr, conn);
sda.Fill(ds, "table2");
conn.Close();
}
catch (Exception ex)
...{
Console.Write("读取菜单错误");
}
}
加载根节点
private void initRoot(TreeView tnd)
...{
try
...{
DataView dv = new DataView();
TreeNode tmpnd;
dv.Table = ds.Tables["table1"];
foreach (DataRowView drv in dv)
...{
tmpnd = new TreeNode();
tmpnd.Value = drv["ID"].ToString();
tmpnd.Text = drv["Title"].ToString();
tnd.Nodes.Add(tmpnd);
tmpnd.PopulateOnDemand = true;
tmpnd.SelectAction = TreeNodeSelectAction.Expand;
}
}
catch (Exception ex)
...{
Console.Write("读取根节点错误");
}
}
加载子节点
private void AddChildNodes(TreeNode nds)
...{
try
...{
DataView dv = new DataView();
TreeNode tmpnd;
dv.Table = ds.Tables["table2"];
dv.RowFilter = "ID=" + nds.Value.ToString() + "";
foreach (DataRowView drv in dv)
...{
tmpnd = new TreeNode();
tmpnd.Value = drv["Did"].ToString();
tmpnd.Text = drv["DTitle"].ToString();
nds.ChildNodes.Add(tmpnd);
tmpnd.PopulateOnDemand = true;
if (nds.ChildNodes.Count != 0)
...{
tmpnd.SelectAction = TreeNodeSelectAction.Expand;
}
}
}
catch (Exception ex)
...{
Console.Write("读取子节点错误");
}
}
在Page_Load里遍历一下
...{
GetDataSet();
initRoot(TreeView1)
foreach(TreeNode tn in TreeView1.Nodes)
...{
AddChildNodes(tn);
}
}
- TreeView 后台加载
- 动态加载树----treeView
- 使用TreeView加载数据
- 动态加载树TreeView
- 动态加载树----treeView
- TreeView单表加载
- XML动态加载TreeView
- treeview数据库加载节点
- 动态加载TreeView
- Treeview 异步加载树
- 递归加载treeview
- Treeview 分级加载方法
- 代码加载TreeView
- 动态加载树----treeView
- 动态加载树----treeView
- TreeView 循环加载数据
- TreeView加载省市数据
- bootstrap-treeview 后台拼装JSON
- [转载]SWT/Jface开发入门指南(一)
- 解读VC++编程中的文件操作API和CFile类
- 创建RIA程序最容易犯的10大错误
- [转载]SWT/Jface开发入门指南(二)
- 如何改进软件专业人士的职业生涯
- TreeView 后台加载
- [转载]SWT/Jface开发入门指南(三)
- 软件工程师的务实职业生涯规划
- Ubuntu下2.6.24的内核编译
- UltraWebGrid 模板列取值(转)
- 使用HibernateTemplate
- SQLDirect组件库用户指南
- DWR 入門與應用(二)
- VS2005安装项目出现:Setup.vdproj 不可恢复的生成错误的解决方法