asp教程.net c實現省市區樹形菜單代碼
/// <summary>
/// 建立dataset的方法
/// </summary>
/// <param name="nodes">treeview的根節點</param>
/// <param name="ds">dataset資料集合</param>
/// <param name="pid">節點的父</param>
private void createtreeview(treenodecollection nodes, dataset ds, int pid)
{
//定義篩選條件
string sql = string.format("parentid={0}", pid);
//從dataset中篩選合格行的集合
datarow[] drr = ds.tables[0].select(sql);
//遍曆獲得行的集合
foreach (datarow dr in drr)
{
//建立treeview節點
treenode tnode = new treenode();
//添加到根節點中
nodes.add(tnode);
//設定顯示的文本
//tnode.imageurl = "images/foldericon1.gif";
tnode.text = dr["purname"].tostring();
tnode.value = dr["purid"].tostring();
//設定顯示的路徑
tnode.navigateurl = dr["pururl"].tostring();
//遞迴調用方法
createtreeview(tnode.childnodes, ds, convert.toint32(dr["purid"]));
//從dataset中刪除已經添加的行,提高訪問效率
ds.tables[0].rows.remove(dr);
}
}
///方法二
private void treeviewbind()
{
string sql_tr = "select id,pid,name from tab";
sqlconnection mysql教程conn = new sqlconnection(sqlconn);
sqldataadapter mydataadapter = new sqldataadapter(sql_tr, mysqlconn);
mysqlconn.open();
mydataadapter.fill(ds_tr, "tree_show");
dataview dv = ds_tr.tables[0].defaultview;
dv.rowfilter = "pid=0";
treeview1.showcheckboxes = treenodetypes.none; //不顯示checkbox
foreach (datarowview drv in dv)
{
treenode node = new treenode();
node.text = drv["name"].tostring();
node.value = drv["id"].tostring();
node.expanded = false;
treeview1.nodes.add(node);
addnode(dv, node);
}
}
/// 遞迴綁定子節點
private void addnode(dataview dv, treenode node)
{
dv.rowfilter = "pid='" + node.value + "'";
foreach (datarowview row in dv)
{
treenode replynode = new treenode();
replynode.text = row["name"].tostring();
replynode.value = row["id"].tostring();
replynode.expanded = false;
node.childnodes.add(replynode);
addnode(dv, replynode);
}
}
//方法三
/// treeview遞迴綁定資料
///先綁定province根據pif查詢city
private void inittree(treenodecollection nds,string parentid)
{
dataview dv=new dataview();
treenode tmpnd;
string intid;
dv.table=ds.tables["tree"];
dv.rowfilter="parentid='" + parentid + "'" ;
foreach(datarowview drv in dv)
{
tmpnd=new treenode();
tmpnd.tag=drv["nodeid"].tostring();
tmpnd.text=drv["nodename"].tostring();
nds.add(tmpnd);
intid=drv["parentid"].tostring();
inittree(tmpnd.nodes,tmpnd.tag.tostring());
}