ASP.NET 无限级树的加载
OPW_XT_MK OP_W_XT_MK = new OPW_XT_MK(AppPublic.GetConnectionString());
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
//生成树
buildTree();
}
}
/// <summary>
/// 添加树形菜单的结构
/// </summary>
private void buildTree()
{
OP_W_XT_MK.GetMKMC(CurrentUser.Id, 0);
foreach (DataRow dbRow in OP_W_XT_MK.dataView.Table.Rows)
{
if (int.Parse(dbRow[TABLE_W_XT_MK.COLUMN_SJBH].ToString()) == 0)
{
TreeNode newNode;
//添加node属性
newNode = CreateNode(dbRow[TABLE_W_XT_MK.COLUMN_MKMC].ToString(), false);
TV_menu.Nodes.Add(newNode);
PopulateSubTree(dbRow, newNode);
}
}
}
/// <summary>
/// 添加子节点
/// </summary>
/// <param name="dbRow">表的一行数据</param>
/// <param name="node">节点</param>
private void PopulateSubTree(DataRow dbRow, TreeNode node)
{
//点击该节点则指向与这个节点相关的业务处理页面
node.NavigateUrl = dbRow[TABLE_W_XT_MK.COLUMN_URL].ToString();
foreach (DataRow childRow in OP_W_XT_MK.dataView.Table.Select(TABLE_W_XT_MK.COLUMN_SJBH + "=" + dbRow[TABLE_W_XT_MK.COLUMN_MKBH].ToString()))
{
TreeNode childNode = CreateNode(childRow[TABLE_W_XT_MK.COLUMN_MKMC].ToString(), false);
childNode.Value = childRow[TABLE_W_XT_MK.COLUMN_MKBH].ToString();
node.ChildNodes.Add(childNode);
PopulateSubTree(childRow, childNode);
}
}
/// <summary>
/// 添加node 的属性 expanded 的属性是设置节点是否展开.
/// </summary>
/// <param name="text">节点显示内容</param>
/// <param name="expanded">设置节点是否展开</param>
/// <returns>树节点</returns>
private TreeNode CreateNode(string text, Boolean expanded)
{
TreeNode node = new TreeNode();
node.Text = text;
node.Expanded = expanded;
return node;
}
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
//生成树
buildTree();
}
}
/// <summary>
/// 添加树形菜单的结构
/// </summary>
private void buildTree()
{
OP_W_XT_MK.GetMKMC(CurrentUser.Id, 0);
foreach (DataRow dbRow in OP_W_XT_MK.dataView.Table.Rows)
{
if (int.Parse(dbRow[TABLE_W_XT_MK.COLUMN_SJBH].ToString()) == 0)
{
TreeNode newNode;
//添加node属性
newNode = CreateNode(dbRow[TABLE_W_XT_MK.COLUMN_MKMC].ToString(), false);
TV_menu.Nodes.Add(newNode);
PopulateSubTree(dbRow, newNode);
}
}
}
/// <summary>
/// 添加子节点
/// </summary>
/// <param name="dbRow">表的一行数据</param>
/// <param name="node">节点</param>
private void PopulateSubTree(DataRow dbRow, TreeNode node)
{
//点击该节点则指向与这个节点相关的业务处理页面
node.NavigateUrl = dbRow[TABLE_W_XT_MK.COLUMN_URL].ToString();
foreach (DataRow childRow in OP_W_XT_MK.dataView.Table.Select(TABLE_W_XT_MK.COLUMN_SJBH + "=" + dbRow[TABLE_W_XT_MK.COLUMN_MKBH].ToString()))
{
TreeNode childNode = CreateNode(childRow[TABLE_W_XT_MK.COLUMN_MKMC].ToString(), false);
childNode.Value = childRow[TABLE_W_XT_MK.COLUMN_MKBH].ToString();
node.ChildNodes.Add(childNode);
PopulateSubTree(childRow, childNode);
}
}
/// <summary>
/// 添加node 的属性 expanded 的属性是设置节点是否展开.
/// </summary>
/// <param name="text">节点显示内容</param>
/// <param name="expanded">设置节点是否展开</param>
/// <returns>树节点</returns>
private TreeNode CreateNode(string text, Boolean expanded)
{
TreeNode node = new TreeNode();
node.Text = text;
node.Expanded = expanded;
return node;
}