效果:
數據庫:
思路:
利用for遍歷,然后創建父節點,再根據父節點創建出子節點。
代碼:
namespace TreeView
{
public partial class TreeView : System.Web.UI.Page
{
string connection = ConfigurationManager.ConnectionStrings["SQLconnection"].ToString();
protected void Page_Load(object sender, EventArgs e)
{
select();
CreateTree();
}
DataSet ds = new DataSet();
public DataSet DataS(string sql, string tablename)
{
SqlConnection con = new SqlConnection(connection);
SqlDataAdapter sqlda = new SqlDataAdapter(sql, con);
sqlda.Fill(ds, tablename);
return ds;
}
//ParentMenu:父節點,
//Grade:標識這是第幾級節點,
//Flag:標識是不是尾結點,1是 0 不是,
//href:指向的鏈接
public void select()
{
string sql = "select * from treeview";
ds = DataS(sql, "test");
}
public void CreateTree()
{
try
{
DataTable dt = ds.Tables["test"];
SortedList sl = new SortedList();
TreeNode tn = new TreeNode();
if (dt.Rows.Count <= 0)
{
tn.Text = "空";
tn.Value = "";
tn.NavigateUrl = "";
tn.Target = "";
tn.Expanded = false;
tn.SelectAction = TreeNodeSelectAction.SelectExpand;
}
else
{
for (int i = 0; i < dt.Rows.Count; i++)
{
//創建父節點
if (dt.Rows[i]["Grade"].ToString() == "1")
{
TreeNode node = new TreeNode();
node.Text = dt.Rows[i]["MenuName"].ToString();
node.Value = dt.Rows[i]["MenuID"].ToString();
if (dt.Rows[i]["Flag"].ToString() == "1")
{
node.NavigateUrl = dt.Rows[i]["href"].ToString();
tn.Target = "_bank";
}
node.Expanded = false;
node.SelectAction = TreeNodeSelectAction.Expand;
sl.Add(node.Value, node);
tv_Method.Nodes.Add(node);
}
else
{
//查找父節點
TreeNode ParentNod = (TreeNode)sl.GetByIndex(sl.IndexOfKey(dt.Rows[i]["ParentMenu"].ToString()));
//創建子節點
TreeNode tnChild = new TreeNode();
tnChild.Text = dt.Rows[i]["MenuName"].ToString();
tnChild.Value = dt.Rows[i]["MenuID"].ToString();
if (dt.Rows[i]["Flag"].ToString() == "1")
{
tnChild.NavigateUrl = dt.Rows[i]["href"].ToString();
tnChild.Target = "_bank";
}
tnChild.Expanded = false;
tnChild.SelectAction = TreeNodeSelectAction.Expand;
sl.Add(tnChild.Value, tnChild);
ParentNod.ChildNodes.Add(tnChild);
}
}
}
}
catch (Exception ex)
{
throw ex;
}
}
}
}
|
新聞熱點
疑難解答