asp.net与读取数据显示Treeview_2006-08-09
2006-08-10 09:40
471 查看
今天收获不错,还搞定了显示treeview控件的问题,连接到数据库取出数据显示成树。参考了网上一位兄弟的代码,不过他用了一套别的树组件,当时没反应过来,找我奇怪了,怎么找不到他代码中的对象,让我真想背一下.ent的命名空间。
在他的代码有,有两种方式实现树,一种是使用递归,据说是效率低一些。另一种是使用堆栈,说效率高,所以呢我就选择堆栈来测试了,有兴趣的朋友可以试一下递归。比较一下,有什么消息么反馈啊。
以下的用堆栈显示树的代码,对堆栈不是太了解,不知道它是谁调谁怎么弄出棵树了,知道的朋友告诉我一声呵。
//Example_AdoNetShowTreeview.aspx文件
//-----------------------------------------------------------------------------------------------------
<%...@ Page Language="C#" AutoEventWireup="true" CodeFile="Example_AdoNetShowTreeview.aspx.cs" Inherits="Example_Example_AdoNetShowTreeview" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>无标题页</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:TreeView ID="TreeView1" runat="server" ShowLines="True">
</asp:TreeView>
<asp:Button ID="ButShowTree" runat="server" OnClick="ButShowTree_Click" Text="显示树" />
</div>
</form>
</body>
</html>
//Example_AdoNetShowTreeview.aspx.cs文件
//-----------------------------------------------------------------------------------------------------
using System;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
public partial class Example_Example_AdoNetShowTreeview : System.Web.UI.Page
...{
//创建数据库连接对象
public SqlConnection objMyconn = new SqlConnection();
protected void Page_Load(object sender, EventArgs e)
...{
//设置连接字符串
objMyconn.ConnectionString = "Pooling=true;Password=;Persist Security Info=True;User ID=sa;Initial Catalog=DotNetExampleDB;Data Source=ZMJINNB";
//打开数据库
objMyconn.Open();
}
protected void ButShowTree_Click(object sender, EventArgs e)
...{
//------------------------------------------------------------------------
//创建DataSet
DataSet objMyds = new DataSet();
//创建数据代理DataAdapter
SqlDataAdapter objMyadp = new SqlDataAdapter("Select FID,FNAME,FPARENT_ID from Event_Type", objMyconn);
//使用数据代码对象将数据填充到数据集对象中,并指定表的名名为:Event_Info
objMyadp.Fill(objMyds, "Event_Info");
DataTable dt = objMyds.Tables[0];
//树的根节点值
string strTreeRootValue = "-1";
if (dt == null)
return;
//定义一个根节点
TreeNode pnode;
//定义一个栈
Stack plist = new Stack();
//------------------------------------------------------------------------
//树的根节点代码
DataRow[] pdrs = dt.Select("FPARENT_ID='" + strTreeRootValue + "'");
if (pdrs != null)
...{
foreach (DataRow dr in pdrs)
...{
pnode = new TreeNode();
pnode.Value = dr["FID"].ToString();
pnode.Text = dr["FNAME"].ToString();
TreeView1.Nodes.Add(pnode);
plist.Push(pnode);
}
}
//------------------------------------------------------------------------
//树的子节点代码
while (true)
...{
if (plist.Count == 0) break;
pnode = (TreeNode)(plist.Pop());
DataRow[] drs = dt.Select("FPARENT_ID='" + pnode.Value + "'");
if (drs != null)
...{
foreach (DataRow dr in drs)
...{
TreeNode node = new TreeNode(dr["FNAME"].ToString(), dr["FID"].ToString());
pnode.ChildNodes.Add(node);
plist.Push(node);
}
}
}
}
}
//创建数据表代码(测试数据就自己搞定吧,呵呵)
//-----------------------------------------------------------------------------------------------------
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[Event_Type]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[Event_Type]
GO
CREATE TABLE [dbo].[Event_Type] (
[FID] [varchar] (32) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[FCODE] [varchar] (32) COLLATE Chinese_PRC_CI_AS NULL ,
[FNAME] [varchar] (64) COLLATE Chinese_PRC_CI_AS NULL ,
[FUSE_ID] [varchar] (32) COLLATE Chinese_PRC_CI_AS NULL ,
[FPARENT_ID] [varchar] (32) COLLATE Chinese_PRC_CI_AS NULL ,
[FOrderID] [float] NULL ,
[FREMARK] [varchar] (256) COLLATE Chinese_PRC_CI_AS NULL
) ON [PRIMARY]
GO
在他的代码有,有两种方式实现树,一种是使用递归,据说是效率低一些。另一种是使用堆栈,说效率高,所以呢我就选择堆栈来测试了,有兴趣的朋友可以试一下递归。比较一下,有什么消息么反馈啊。
以下的用堆栈显示树的代码,对堆栈不是太了解,不知道它是谁调谁怎么弄出棵树了,知道的朋友告诉我一声呵。
//Example_AdoNetShowTreeview.aspx文件
//-----------------------------------------------------------------------------------------------------
<%...@ Page Language="C#" AutoEventWireup="true" CodeFile="Example_AdoNetShowTreeview.aspx.cs" Inherits="Example_Example_AdoNetShowTreeview" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>无标题页</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:TreeView ID="TreeView1" runat="server" ShowLines="True">
</asp:TreeView>
<asp:Button ID="ButShowTree" runat="server" OnClick="ButShowTree_Click" Text="显示树" />
</div>
</form>
</body>
</html>
//Example_AdoNetShowTreeview.aspx.cs文件
//-----------------------------------------------------------------------------------------------------
using System;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
public partial class Example_Example_AdoNetShowTreeview : System.Web.UI.Page
...{
//创建数据库连接对象
public SqlConnection objMyconn = new SqlConnection();
protected void Page_Load(object sender, EventArgs e)
...{
//设置连接字符串
objMyconn.ConnectionString = "Pooling=true;Password=;Persist Security Info=True;User ID=sa;Initial Catalog=DotNetExampleDB;Data Source=ZMJINNB";
//打开数据库
objMyconn.Open();
}
protected void ButShowTree_Click(object sender, EventArgs e)
...{
//------------------------------------------------------------------------
//创建DataSet
DataSet objMyds = new DataSet();
//创建数据代理DataAdapter
SqlDataAdapter objMyadp = new SqlDataAdapter("Select FID,FNAME,FPARENT_ID from Event_Type", objMyconn);
//使用数据代码对象将数据填充到数据集对象中,并指定表的名名为:Event_Info
objMyadp.Fill(objMyds, "Event_Info");
DataTable dt = objMyds.Tables[0];
//树的根节点值
string strTreeRootValue = "-1";
if (dt == null)
return;
//定义一个根节点
TreeNode pnode;
//定义一个栈
Stack plist = new Stack();
//------------------------------------------------------------------------
//树的根节点代码
DataRow[] pdrs = dt.Select("FPARENT_ID='" + strTreeRootValue + "'");
if (pdrs != null)
...{
foreach (DataRow dr in pdrs)
...{
pnode = new TreeNode();
pnode.Value = dr["FID"].ToString();
pnode.Text = dr["FNAME"].ToString();
TreeView1.Nodes.Add(pnode);
plist.Push(pnode);
}
}
//------------------------------------------------------------------------
//树的子节点代码
while (true)
...{
if (plist.Count == 0) break;
pnode = (TreeNode)(plist.Pop());
DataRow[] drs = dt.Select("FPARENT_ID='" + pnode.Value + "'");
if (drs != null)
...{
foreach (DataRow dr in drs)
...{
TreeNode node = new TreeNode(dr["FNAME"].ToString(), dr["FID"].ToString());
pnode.ChildNodes.Add(node);
plist.Push(node);
}
}
}
}
}
//创建数据表代码(测试数据就自己搞定吧,呵呵)
//-----------------------------------------------------------------------------------------------------
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[Event_Type]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[Event_Type]
GO
CREATE TABLE [dbo].[Event_Type] (
[FID] [varchar] (32) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[FCODE] [varchar] (32) COLLATE Chinese_PRC_CI_AS NULL ,
[FNAME] [varchar] (64) COLLATE Chinese_PRC_CI_AS NULL ,
[FUSE_ID] [varchar] (32) COLLATE Chinese_PRC_CI_AS NULL ,
[FPARENT_ID] [varchar] (32) COLLATE Chinese_PRC_CI_AS NULL ,
[FOrderID] [float] NULL ,
[FREMARK] [varchar] (256) COLLATE Chinese_PRC_CI_AS NULL
) ON [PRIMARY]
GO
相关文章推荐
- ASP.NET - 演练:在 TreeView 控件中显示分层数据
- asp.net 读取并显示excel数据的实现代码
- 使用asp.net读取并显示excel数据
- asp.net 读取并显示excel数据的实现代码
- asp.net TreeView动态绑定数据库显示数据
- ASP.net 从数据库中读取html格式的数据并显示在页面中
- ASP.Net TreeView动态显示数据库数据
- xml + asp.net 实现 xml数据读取到 treeview
- 使用 asp.net 2.0 自带的TreeView控件显示内联表数据(树状数据)
- ASP.NET Web Pages基础知识---从文本文件中读取并显示数据
- (转)ASP.NET 2.0 从数据库中读取数据生成分层的结构化TreeView
- Asp.net中Json数据的转化,读取与应用
- ASP.net中读取excel内容,并显示在界面上
- ASP.NET数据库使用精典-----读取数据库中数据
- asp.net mvc jqgrid 同一个页面查询不同的表,jqgrid显示不同表的表头和数据并且分页
- asp.net数据绑定与显示等笔记
- ASP.NET中使用DataGrid显示数据
- asp.net checkboxlist绑定数据读取出来
- 用ASP.NET在同一网页中显示主从关系表的相关数据
- Scott Mitchell 的ASP.NET 2.0数据教程之第55: 在Data Web控件显示二进制数据