数据库 create database treeview go use treeview create table node1 ( nd1id int primary key, nd1name varchar(32) ) create table node2 ( nd2id int primary key, nd1id int, nd2name varchar(32) ) create table node3 ( nd3id int primary key, nd2i
数据库
create database treeview
go
use treeview
create table node1
(
nd1id int primary key,
nd1name varchar(32)
)
create table node2
(
nd2id int primary key,
nd1id int,
nd2name varchar(32)
)
create table node3
(
nd3id int primary key,
nd2id int,
nd3name varchar(32)
)
insert node1 values(0,'node1_1')
insert node1 values(1,'node1_2')
insert node1 values(2,'node1_3')
insert node1 values(3,'node1_4')
insert node2 values(0,0,'node2_1')
insert node2 values(1,0,'node2_2')
insert node2 values(2,1,'node2_3')
insert node2 values(3,1,'node2_4')
insert node2 values(4,2,'node2_5')
insert node2 values(5,3,'node2_6')
insert node2 values(6,2,'node2_7')
insert node3 values(0,0,'node3_1')
insert node3 values(1,0,'node3_2')
insert node3 values(2,1,'node3_3')
insert node3 values(3,2,'node3_4')
insert node3 values(4,1,'node3_5')
insert node3 values(5,3,'node3_6')
insert node3 values(6,5,'node3_7')
insert node3 values(7,6,'node3_8')
insert node3 values(8,3,'node3_9')
insert node3 values(9,4,'node3_10')
insert node3 values(10,5,'node3_11')
vs代码
void populatecategories(treenode node)
{
string sql = select nd1name, nd1id from node1;
dataset resultset;
resultset = getdataset(sql, null);
if (resultset.tables.count > 0)
{
foreach (datarow row in resultset.tables[0].rows)
{
treenode newnode = new treenode(row[nd1name].tostring(), row[nd1id].tostring());
newnode.populateondemand = true;
newnode.selectaction = treenodeselectaction.expand;
node.childnodes.add(newnode);
}
}
}
void populateproducts(treenode node)
{
string sql = select nd2name,nd2id from node2 + where nd1id = @id;
sqlparameter para = new sqlparameter(@id, sqldbtype.int);
para.value = node.value;
//sqlquery.parameters.add(@id, sqldbtype.int).value = node.value;
dataset resultset = getdataset(sql, para);
if (resultset.tables.count > 0)
{
foreach (datarow row in resultset.tables[0].rows)
{
treenode newnode = new treenode(row[nd2name].tostring(), row[nd2id].tostring());
newnode.populateondemand = true;
newnode.selectaction = treenodeselectaction.expand;
node.childnodes.add(newnode);
}
}
}
void populateproducts1(treenode node)
{
string sql = select nd3name,nd3id from node3 + where nd2id = @id;
sqlparameter para = new sqlparameter(@id, sqldbtype.int);
para.value = node.value;
//sqlquery.parameters.add(@id, sqldbtype.int).value = node.value;
dataset resultset = getdataset(sql, para);
if (resultset.tables.count > 0)
{
foreach (datarow row in resultset.tables[0].rows)
{
treenode newnode = new treenode(row[nd3name].tostring(), row[nd3id].tostring());
newnode.populateondemand = false;
newnode.selectaction = treenodeselectaction.selectexpand;
node.childnodes.add(newnode);
}
}
}
private dataset getdataset(string sql,sqlparameter paralist)
{
string strconn = database=treeview;server=.;integrated security=sspi;
sqlconnection conn = new sqlconnection(strconn);
sqlcommand cmd = new sqlcommand();
if (paralist != null)
{
cmd.parameters.add(paralist);
}
cmd.commandtext = sql;
cmd.connection = conn;
sqldataadapter da = new sqldataadapter(cmd);
dataset ds = new dataset();
da.fill(ds);
return ds;
}
protected void treeview1_treenodepopulate(object sender, treenodeeventargs e)
{
if (e.node.childnodes.count == 0)
{
switch (e.node.depth)
{
case 0:
populatecategories(e.node);
break;
case 1:
populateproducts(e.node);
break;
case 2:
populateproducts1(e.node);
break;
}
}
}
protected void treeview1_selectednodechanged(object sender, eventargs e)
{
response.write(adfdf);
}
protected void treeview1_treenodeexpanded(object sender, treenodeeventargs e)
{
//response.write(adfdf);
}