using System;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Data.SqlClient;public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (Page.IsPostBack)
{
return;
}
string constr = System.Configuration.ConfigurationManager.ConnectionStrings["conStr"].ConnectionString;
SqlConnection con = new SqlConnection(constr);
string sql = "select A.id,name,number,Tname from A,B where number=A.id";
SqlDataAdapter sda = new SqlDataAdapter(sql, con);
DataSet ds = new DataSet();
sda.Fill(ds);
GridView1.DataSource = ds.Tables[0];
GridView1.DataBind(); ViewState["Ds"] = ds;
LoadView();
} private void LoadView()
{
DataSet ds = ViewState["Ds"] as DataSet;
foreach (DataRow dr in ds.Tables[0].Rows)
{
TreeNode tn = new TreeNode(dr["name"].ToString(),dr["id"].ToString());
treeview1.Nodes.Add(tn);
LoadView(tn.Value,tn);
}
} private void LoadView(string p, TreeNode t)
{
DataSet ds = ViewState["Ds"] as DataSet;
foreach (DataRow dr in ds.Tables[0].Rows)
{
TreeNode tn = new TreeNode(dr["Tname"].ToString());
t.ChildNodes.Add(tn);
//LoadView(tn.Value, tn);
}
}
}
-----------------------------------------------------------------
数据库
create table A
(
id int identity(1,1) primary key,
name varchar(20)
)insert into A(name)values('文学')
insert into A(name)values('体育')
create table B
(
id int identity(1,1) primary key,
number int references A(id),
Tname varchar(20)
)
insert into B(number,Tname)values(1,'语文')
insert into B(number,Tname)values(1,'数学')insert into B(number,Tname)values(2,'篮球')
insert into B(number,Tname)values(2,'足球')select *from B
---------------------------------------------------
想要的效果时文学
语文
数学
体育
篮球
足球
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Data.SqlClient;public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (Page.IsPostBack)
{
return;
}
string constr = System.Configuration.ConfigurationManager.ConnectionStrings["conStr"].ConnectionString;
SqlConnection con = new SqlConnection(constr);
string sql = "select A.id,name,number,Tname from A,B where number=A.id";
SqlDataAdapter sda = new SqlDataAdapter(sql, con);
DataSet ds = new DataSet();
sda.Fill(ds);
GridView1.DataSource = ds.Tables[0];
GridView1.DataBind(); ViewState["Ds"] = ds;
LoadView();
} private void LoadView()
{
DataSet ds = ViewState["Ds"] as DataSet;
foreach (DataRow dr in ds.Tables[0].Rows)
{
TreeNode tn = new TreeNode(dr["name"].ToString(),dr["id"].ToString());
treeview1.Nodes.Add(tn);
LoadView(tn.Value,tn);
}
} private void LoadView(string p, TreeNode t)
{
DataSet ds = ViewState["Ds"] as DataSet;
foreach (DataRow dr in ds.Tables[0].Rows)
{
TreeNode tn = new TreeNode(dr["Tname"].ToString());
t.ChildNodes.Add(tn);
//LoadView(tn.Value, tn);
}
}
}
-----------------------------------------------------------------
数据库
create table A
(
id int identity(1,1) primary key,
name varchar(20)
)insert into A(name)values('文学')
insert into A(name)values('体育')
create table B
(
id int identity(1,1) primary key,
number int references A(id),
Tname varchar(20)
)
insert into B(number,Tname)values(1,'语文')
insert into B(number,Tname)values(1,'数学')insert into B(number,Tname)values(2,'篮球')
insert into B(number,Tname)values(2,'足球')select *from B
---------------------------------------------------
想要的效果时文学
语文
数学
体育
篮球
足球
文学和体育的parentId -1,语文和数学的parentId就是文学的Id,以此类推
绑定treeView可以用递归
{
//读取数据库中的数据
DataTable dataTable=Bind().Tables[0];
this.TreeView1.Nodes.Clear(); DataRow[] rowList = dataTable.Select("parentid='0'"); //获取筛选器中的数据,返回一个行数组 if (rowList.Length < 1)
return; TreeNode rootNode = new TreeNode(); rootNode.Text = rowList[0]["nodename"].ToString();
rootNode.Value = rowList[0]["nodeid"].ToString(); //设置根节点的Key值(key从1开始起) rootNode.Expanded = true; this.TreeView1.Nodes.Add(rootNode); //调用其他函数,创建其他子节点
CreateChildNode(rootNode,"0");
}
//查询结果
private DataSet Bind() //返回一个结果集
{
SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["con"].ConnectionString);
con.Open();
string cmdtext = "select * from treeviewtable";
SqlDataAdapter adapter = new SqlDataAdapter(cmdtext, con);
DataSet ds = new DataSet();
adapter.Fill(ds);
//返回一个结果集
return ds; }
private void CreateChildNode(TreeNode parentNode,string seldate)
{
DataTable dataTable1 = Bind().Tables[0];
//筛选数据
DataRow []rowList = dataTable1.Select("parentid='"+parentNode.Value+"'");
foreach (DataRow row in rowList)
{
//创建新节点
TreeNode node = new TreeNode();
node.Text = row["nodename"].ToString();
node.Value = row["nodeid"].ToString();
node.NavigateUrl = row["url"].ToString(); node.Expanded = true; //添加子节点
parentNode.ChildNodes.Add(node);
//递归调用,创建其他节点
CreateChildNode(node, seldate);
}
}
/// <summary>
/// 添加节点
/// </summary>
void addTreeView()
{
DataView dv = new DataView(GetSet().Tables[0]);
AddTree(dv,-1, (TreeNode)null);
} /// <summary>
/// 递归添加节点
/// </summary>
/// <param name="dvTree"></param>
/// <param name="id"></param>
/// <param name="pNode"></param>
void AddTree(DataView dvTree, int id, TreeNode pNode)
{
//过滤ParentID,得到当前的所有子节点
string rowFilter = "ParentID=" + id;
dvTree.RowFilter = rowFilter;
foreach (DataRowView Row in dvTree)
{
TreeNode Node = new TreeNode();
if (pNode == null)
{ //添加根节点
Node.Text = Row["Desc"].ToString(); Node.Value = Row["CategoryID"].ToString();
TreeView1.Nodes.Add(Node);
Node.Expanded = true;
AddTree(dvTree, int.Parse(Row["CategoryID"].ToString()), Node); //再次递归
}
else
{ //添加当前节点的子节点
Node.Text = Row["Desc"].ToString(); Node.Value = Row["CategoryID"].ToString();
pNode.ChildNodes.Add(Node);
Node.Expanded = true;
AddTree(dvTree, int.Parse(Row["CategoryID"].ToString()), Node); //再次递归
}
}
}
父级的parentId为-1,子级的parentId为父级的Id
id name parentId
1 文学 -1
2 体育 -1
3 语文 1
4 数学 1
5 篮球 2
6 足球 2
大哥 你里面的GetSet()方法 在哪里哦! 小弟新手 能把例子发我邮箱吗![email protected]