asp.net TreeView动态绑定数据库显示数据
2009-11-16 15:40
681 查看
假设在数据库中建立一张表, 如tb_treeview,如下创建
create table tb_treeview(
id int not null,
displayName varchar(20),
parentId int ,
url varchar(100)
);
向表中插入几个数据如:
insert into tb_treeview(1,'中国',0,'');
insert into tb_treeview(2,'安徽省',1,'');
insert into tb_treeview(3,'合肥市',2,'');
insert into tb_treeview(4,'江苏省',1,'');
insert into tb_treeview(5,'南京市',4,'');
insert into tb_treeview(6,'湖北省',1,'');
作为演示数据。
(1)、打开VS2005,新建一个网站项目,在Default.aspx.cs文件里添加如下代码:
...
using System.Data.SqlClient;
....
DataTable dt = new DataTable();
public void Page_Load(object sender,EventArgs e)
{
if(!IsPostBack)
{
try
{
string conString = "Data Source=.;uid=sa;pwd=;Database=master";
SqlConnection con = new SqlConnection(conString);
con.Open();
string strSQL = "select * from tb_treeview";
SqlDataAdapter da = new SqlDataAdapter(strSQL,con);
da.Fill(dt);
}
catch(Exception e)
{
}
finally
{
con.Close();
}
AddTreeNode(0,(TreeNode)null);
}
}
protected void AddTreeNode(int parentId,TreeNode pNode)
{
TreeNode tn1 = new TreeNode();
DataView dv= new DataView(dt);
//过滤parentId,得到当前节点的所有子节点
dv.RowFilter = "parentId="+parentId;
foreach(DataRowView drv in dv)
{
if(pNode==null)
{
tn1.Text = drv["displayName"].ToString(); //节点上要显示的名称
tn1.NavigateUrl = drv["url"].ToString(); //点击节点名称,跳转到指定url页面
TreeView1.Nodes.Add(tn1); //将根节点加入到TreeView中去
tn1.Expanded = true;
//递归调用
AddTreeNode(Int32.parse(drv["id"].ToString()),tn1);
}
else
{
TreeNode tn2 = new TreeNode();
tn2.Text = drv["displayName"].ToString();
tn2.NavigateUrl = drv["url"].ToString();
pNode.ChildNodes.Add(tn2);
tn1.Expanded = true;
//递归调用
AddTreeNode(Int32.parse(drv["id"].ToString()),tn2);
}
}
}
(2)、在浏览器中运行,打开效果如下
+中国
|+安徽省
| |_合肥市
|+江苏省
| |_南京市
|+湖北省
需要说明的是,在实际开发中,关于数据库的数据访问应该放在DAL层里,这里只是做简单的演示而已。
如果想改变已经选择的节点,和移动到该节点时字体的呈现颜色的话,可以这样设置:
<asp:TreeView ID="TreeView1" runat="server" ShowLines="True" CssClass="Menu">
<RootNodeStyle ForeColor="red"/>
<SelectedNodeStyle ForeColor="gray" />
<HoverNodeStyle ForeColor="aqua" />
</asp:TreeView>
create table tb_treeview(
id int not null,
displayName varchar(20),
parentId int ,
url varchar(100)
);
向表中插入几个数据如:
insert into tb_treeview(1,'中国',0,'');
insert into tb_treeview(2,'安徽省',1,'');
insert into tb_treeview(3,'合肥市',2,'');
insert into tb_treeview(4,'江苏省',1,'');
insert into tb_treeview(5,'南京市',4,'');
insert into tb_treeview(6,'湖北省',1,'');
作为演示数据。
(1)、打开VS2005,新建一个网站项目,在Default.aspx.cs文件里添加如下代码:
...
using System.Data.SqlClient;
....
DataTable dt = new DataTable();
public void Page_Load(object sender,EventArgs e)
{
if(!IsPostBack)
{
try
{
string conString = "Data Source=.;uid=sa;pwd=;Database=master";
SqlConnection con = new SqlConnection(conString);
con.Open();
string strSQL = "select * from tb_treeview";
SqlDataAdapter da = new SqlDataAdapter(strSQL,con);
da.Fill(dt);
}
catch(Exception e)
{
}
finally
{
con.Close();
}
AddTreeNode(0,(TreeNode)null);
}
}
protected void AddTreeNode(int parentId,TreeNode pNode)
{
TreeNode tn1 = new TreeNode();
DataView dv= new DataView(dt);
//过滤parentId,得到当前节点的所有子节点
dv.RowFilter = "parentId="+parentId;
foreach(DataRowView drv in dv)
{
if(pNode==null)
{
tn1.Text = drv["displayName"].ToString(); //节点上要显示的名称
tn1.NavigateUrl = drv["url"].ToString(); //点击节点名称,跳转到指定url页面
TreeView1.Nodes.Add(tn1); //将根节点加入到TreeView中去
tn1.Expanded = true;
//递归调用
AddTreeNode(Int32.parse(drv["id"].ToString()),tn1);
}
else
{
TreeNode tn2 = new TreeNode();
tn2.Text = drv["displayName"].ToString();
tn2.NavigateUrl = drv["url"].ToString();
pNode.ChildNodes.Add(tn2);
tn1.Expanded = true;
//递归调用
AddTreeNode(Int32.parse(drv["id"].ToString()),tn2);
}
}
}
(2)、在浏览器中运行,打开效果如下
+中国
|+安徽省
| |_合肥市
|+江苏省
| |_南京市
|+湖北省
需要说明的是,在实际开发中,关于数据库的数据访问应该放在DAL层里,这里只是做简单的演示而已。
如果想改变已经选择的节点,和移动到该节点时字体的呈现颜色的话,可以这样设置:
<asp:TreeView ID="TreeView1" runat="server" ShowLines="True" CssClass="Menu">
<RootNodeStyle ForeColor="red"/>
<SelectedNodeStyle ForeColor="gray" />
<HoverNodeStyle ForeColor="aqua" />
</asp:TreeView>
相关文章推荐
- ASP.NET TreeView动态绑定数据库显示
- ASP.Net TreeView动态显示数据库数据
- asp.net 2.0的GridView的动态绑定数据的用法!
- ASP.NET中GridView动态绑定数据实现编辑更新
- ASP.Net绑定数据到树[TreeView]-----献给善忘的,依然是菜鸟的我们。
- Highcharts结合Asp.net实现动态数据股票式图形显示实例
- asp.net and datagrid 动态绑定数据列与存取特定列的值
- asp.net ajaxtoolkit CascadingDropDown从数据库中读取数据绑定到DropDownList控件上
- ASP.NET FormView - 动态模版以及数据绑定到DynamicObject
- asp.net实现Gradview绑定数据库数据并导出Excel的方法
- ASP.NET 2.0 中实现 Treeview 与数据库的绑定(含代码)
- ASP.NET网络爬虫小研究 HtmlAgilityPack基础,爬取数据保存在数据库中再显示再自己的网页中
- Asp.Net MVC 视图(显示数据库数据表格) - Part.3
- 怎样在ASP.NET中显示数据库中的数据
- 数据绑定到列表框并显示(asp.net)
- Highcharts结合Asp.net实现动态数据股票式图形显示实例 .【转】
- 树型节点与数据库的动态连接(asp.net 2.0 TreeView控件的使用)
- 理解asp.net中DropDownList编辑数据源,绑定数据库数据。
- Asp.net MVC 模型(Entity Framework、LinqToSql、显示数据库数据表格)
- ASP.NET 读数据库绑定到 TreeView 递归方式