asp.Nettreeview再帰書き方
これは私がネット上で抜粋した再帰的な追加方法です.
asp treeview TreeVieww1, DataTable dt, treeview Text "name",Node "id",
id "fatherid",
asp
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
// DataTable
DataTable dt = dtAdapter.GetClass();
//
newtree.AddTree(dt,TreeView1,"name","id","005000000000", (TreeNode)null);
}
}
"005000000000" id( id/fatherid string ),"(TreeNode)null" TreeNode 。 ,
, 。
//
public void AddTree(DataTable dt, TreeView tv, string NodeText, string NewNode, string FatherID, TreeNode pNode)
{
DataView dvTree = new DataView(dt);
// FatherID,
dvTree.RowFilter = "fatherid=" + FatherID;
foreach (DataRowView Row in dvTree)
{
TreeNode Node = new TreeNode();
if (pNode == null)
{ //
Node.Text = Row[NodeText].ToString();
tv.Nodes.Add(Node);
Node.Expanded = true;
AddTree(dt, tv, NodeText, NewNode, Row[NewNode].ToString(), Node); //
}
else
{ //
Node.Text = Row[NodeText].ToString().ToString();
pNode.ChildNodes.Add(Node);
Node.Expanded = true;
AddTree(dt, tv, NodeText, NewNode, Row[NewNode].ToString(), Node); //
}
}
}
, 。
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
DataTable dt;
object[] str = dt.Rows[0].ItemArray;
TreeMenu.BindTree(TreeView1.Nodes[0], dt, str[dt.Columns["id"].Ordinal].ToString());
}
}
。fatherid 。
public static void BindTree(TreeNodeCollection Nds, DataTable dt, string id)
{
DataView dv = new DataView(dt);
dv.RowFilter = "fatherid = '" + id.ToString() + "'";
TreeNode node;
foreach (DataRowView drv in dv)
{
node = new TreeNode();
node.Value= drv["id"].ToString();
node.Text = drv["name"].ToString();
Nds.Add(node);
BindTree(node.ChildNodes, dt, drv["id"].ToString());
}
}
, 。
, 。