TreeView控件的绑定
using system.collections.generic;
using system.linq;
using system.text;
using system.data;
using system.web;
using system.web.ui.webcontrols;
using dal;
using model;
namespace bll
{
public class varitymanage
{
//获得根结点信息
public static list<pnode> getpnode()
{
return dal.listtreenode.getpnode();
}
//获得叶结点信息
public static list<node> getnode(int pnode_id)
{
return dal.listtreenode.getnode(pnode_id);
}
}
}
关于treeview控件的绑定,在网上查了很多资料,练习了在两种情况下的绑定,一种是在网页后台直接绑定,一种是在三层架构中绑定。
表的设计
商品小类表(tb_type)
字段名 | 数据类型 | 主键 | 外键 | 非空 | 含义 |
type_id | int | 是 | 否 | 是 | 小类编号 |
type_name | nvarchar(50) | 否 | 否 | 否 | 小类名称 |
category_id | int | 否 | 否 | 是 | 大类编号 |
intro | text | 否 | 否 | 是 | 介绍 |
字段名 | 数据类型 | 主键 | 外键 | 非空 | 含义 |
category_id | int | 是 | 否 | 是 | 大类编号 |
category_name | varchar(255) | 否 | 否 | 否 | 大类名称 |
intro | text | 否 | 否 | 是 | 介绍 |
网页后台直接绑定:
using system;
using system.collections.generic;
using system.linq;
using system.web;
using system.web.ui;
using system.web.ui.webcontrols;
using mysql.data.mysqlclient;
using system.data;
public partial class _default : system.web.ui.page
{
protected void page_load(object sender, eventargs e)
{
if (!ispostback)
{
datatable dtfather=exe_table("server=localhost;user id=root;password=root;database=em", "select distinct tb_category.category_id,tb_category.category_name from tb_category");
foreach(datarow dr in dtfather.rows)
{
treenode tn = new treenode();
tn.value = dr["category_id"].tostring();
tn.text = dr["category_name"].tostring();
treeview1.nodes.add(tn);
datatable dtchild = exe_table("server=localhost;user id=root;password=root;database=em",
"select type_id,type_name,category_id from tb_type where tb_type.category_id=" + dr["category_id"].tostring());
foreach (datarow drchild in dtchild.rows)
{
treenode tnchild = new treenode();
tnchild.value = drchild["type_id"].tostring();//节点的value值,一般为数据库的id值
tnchild.text = drchild["type_name"].tostring();//节点的text,节点的文本显示
tn.childnodes.add(tnchild);
}
}
}
}
/// <summary>
/// 取出数据库中数据,生成datatable
/// </summary>
/// <param name="str_con">数据库连接</param>
/// <param name="str_cmd">sql语句</param>
/// <returns></returns>
private datatable exe_table(string str_con,string str_cmd)
{
dataset ds = new dataset();
using (mysqlconnection conn = new mysqlconnection(str_con))
{
using (mysqldataadapter oda = new mysqldataadapter(str_cmd, conn))
{
conn.open();
oda.fill(ds);
}
}
return ds.tables[0];
}
}
三层架构绑定:
model实体类:
using system;
using system.collections.generic;
using system.linq;
using system.text;
namespace model
{
public class pnode
{
public int id { get; set; }
public string name { get; set; }
public string intro { get; set; }
}
}
using system;
using system.collections.generic;
using system.linq;
using system.text;
namespace model
{
public class node
{
public int id { get; set; }
public string name { get; set; }
public int pid { get; set; }
public string intro { get; set; }
}
}
dal:
using system;
using system.collections.generic;
using system.linq;
using system.text;
using mysql.data.mysqlclient;
using system.data;
using model;
namespace dal
{
public class listtreenode
{
public static list<pnode> getpnode()
{
string strsql = "select distinct category_id,category_name ,intro from tb_category";
list<pnode> list = new list<pnode>();
using (mysqlconnection cn = new mysqlconnection(strcon.conn))
{
cn.open();
mysqldataadapter sda = new mysqldataadapter(strsql, cn);
dataset ds = new dataset();
sda.fill(ds);
foreach (datarow dr in ds.tables[0].rows)
{
pnode pnode = new pnode();
pnode.id = (int)dr["category_id"];
pnode.name = dr["category_name"].tostring();
pnode.intro = dr["intro"].tostring();
list.add(pnode);
}
return list;
}
}
public static list<node> getnode(int pnode_id)
{
string strsql ="select type_id,type_name,tb_type.intro,category_id from tb_type where tb_type.category_id=" + pnode_id;
list<node> list = new list<node>();
using (mysqlconnection cn = new mysqlconnection(strcon.conn))
{
cn.open();
mysqldataadapter sda = new mysqldataadapter(strsql, cn);
dataset ds = new dataset();
sda.fill(ds);
foreach (datarow dr in ds.tables[0].rows)
{
node node = new node();
node.id = (int)dr["type_id"];
node.name = dr["type_name"].tostring();
node.intro = dr["intro"].tostring();
list.add(node);
}
return list;
}
}
}
}
bll:
using system;
using system.collections.generic;
using system.linq;
using system.text;
using system.data;
using system.web;
using system.web.ui.webcontrols;
using dal;
using model;
namespace bll
{
public class varitymanage
{
//获得根结点信息
public static list<pnode> getpnode()
{
return dal.listtreenode.getpnode();
}
//获得叶结点信息
public static list<node> getnode(int pnode_id)
{
return dal.listtreenode.getnode(pnode_id);
}
}
}
ui:
using system;
using system.collections.generic;
using system.linq;
using system.web;
using system.web.ui;
using system.web.ui.webcontrols;
using bll;
using model;
namespace e_mall_background_system.management
{
public partial class main : system.web.ui.page
{
protected void page_load(object sender, eventargs e)
{
if (!ispostback)
{
bindtreeview();
bindddlselectpnode1();
}
}
//treeview的绑定
public void bindtreeview()
{
treeview1.nodes.clear();
int rootid = 0;
string rootname = "所有商品种类";
treenode root = createtreenode(rootid, rootname);
treeview1.nodes.add(root);
list<pnode> pnodes = varitymanage.getpnode();
foreach (pnode pnode in pnodes)
{
int nodeid = (int)pnode.id;
string nodename = pnode.name.tostring();
treenode treenode = this.createtreenode(nodeid, nodename);
root.childnodes.add(treenode);
list<node> nodes = varitymanage.getnode(nodeid);
foreach (node node in nodes)
{
int childnodeid =(int) node.id;
string childnodename = node.name.tostring();
treenode childtreenode = this.createtreenode(childnodeid, childnodename);
treenode.childnodes.add(childtreenode);
}
}
}
public treenode createtreenode(int id, string name)
{
treenode tn = new treenode();
tn.value = id.tostring();
tn.text = name;
return tn;
}
}
}
摘自 miko2012