Tree:

namespace ECTECH.NorthSJ.Web.SysData
{
public partial class testTree : BasePage
{
protected int roleId = ; protected void Page_Load(object sender, EventArgs e)
{
if(!IsPostBack)
{
List<Model.Funcs> list = new BLL.RoleFuncs().GetRFunc("", roleId);
foreach(Model.Funcs func in list)
{
FineUI.TreeNode node = new TreeNode() { Text = func.Name, NodeID = func.ID.ToString(), Leaf = false, EnableCheckBox=true };
LoadChildNode(func.FuncCode,roleId, node);
tree1.Nodes.Add(node);
}
}
} private void LoadChildNode(string parentCode, int roleId,TreeNode node)
{
List<Model.Funcs> list = new BLL.RoleFuncs().GetRFunc(parentCode, roleId);
foreach (Model.Funcs func in list)
{
TreeNode nodeChild = new TreeNode() { Text = func.Name, NodeID = func.ID.ToString(), Leaf = true, EnableCheckBox = true };
node.Nodes.Add(nodeChild);
}
} protected void btn1_Click(object sender, EventArgs e)
{
string[] ids = tree1.SelectedNodeIDArray;
string idStr = string.Join(",", ids);
lbResult.Text = idStr;
} }

Form:

    <form id="form1" runat="server">
<div>
<x:PageManager ID="PageManager1" AutoSizePanelID="RegionPanel1" runat="server">
</x:PageManager>
<x:Tree ID="tree1" EnableMultiSelect="true" runat="server"></x:Tree>
<x:Button ID="btn1" Text="确定" runat="server" OnClick="btn1_Click"></x:Button>
<x:Label ID="lbResult" EncodeText="false" runat="server"></x:Label>
</div>
</form>

树节点,绑定到DataTable:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI; using System.Data;
using FineUI; namespace Test_Web1
{
public partial class TreeTable : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if(! IsPostBack)
{
LoadData();
}
} private void LoadData()
{
DataTable dt = CreateTable();
DataSet ds = new DataSet();
ds.Tables.Add(dt);
ds.Relations.Add("treeRelation", ds.Tables[].Columns["ID"],ds.Tables[].Columns["PID"]); foreach(DataRow row in ds.Tables[].Rows)
{
if(row["PID"]==DBNull.Value)
{
TreeNode node = new TreeNode();
node.Text = row["Name"].ToString();
node.NodeID = row["ID"].ToString();
node.Expanded = true;
Tree1.Nodes.Add(node); ResolveSubTree(row, node);
}
}
} private void ResolveSubTree(DataRow row, TreeNode node)
{
DataRow[] rows = row.GetChildRows("treeRelation");
if(rows.Length>)
{
foreach(DataRow r in rows)
{
TreeNode n = new TreeNode();
n.Text = r["Name"].ToString();
n.NodeID = r["ID"].ToString();
n.ParentNode = node;
node.Nodes.Add(n); ResolveSubTree(r, n);
}
}
} public DataTable CreateTable()
{
DataTable dt = new DataTable();
dt.Columns.Add("ID", typeof(string));
dt.Columns.Add("Name", typeof(string));
dt.Columns.Add("PID", typeof(string)); DataRow row = dt.NewRow();
row["ID"] = "";
row["Name"] = "四川省";
row["PID"] = DBNull.Value;
dt.Rows.Add(row); row = dt.NewRow();
row["ID"] = "";
row["Name"] = "江苏省";
row["PID"] = DBNull.Value;
dt.Rows.Add(row); row = dt.NewRow();
row["ID"] = "";
row["Name"] = "苏州市";
row["PID"] = "";
dt.Rows.Add(row); row = dt.NewRow();
row["ID"] = "";
row["Name"] = "常州市";
row["PID"] = "";
dt.Rows.Add(row); row = dt.NewRow();
row["ID"] = "";
row["Name"] = "镇江市";
row["PID"] = "";
dt.Rows.Add(row); row = dt.NewRow();
row["ID"] = "";
row["Name"] = "无锡市";
row["PID"] = "";
dt.Rows.Add(row); row = dt.NewRow();
row["ID"] = "";
row["Name"] = "达州市";
row["PID"] = "";
dt.Rows.Add(row); row = dt.NewRow();
row["ID"] = "";
row["Name"] = "广元市";
row["PID"] = "";
dt.Rows.Add(row); row = dt.NewRow();
row["ID"] = "";
row["Name"] = "宣汉县";
row["PID"] = "";
dt.Rows.Add(row); row = dt.NewRow();
row["ID"] = "";
row["Name"] = "大竹县";
row["PID"] = "";
dt.Rows.Add(row); return dt; }
}
}

WebForm中创建树节点TreeNode的更多相关文章

  1. webform 创建树

    using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.UI ...

  2. PAT树_层序遍历叶节点、中序建树后序输出、AVL树的根、二叉树路径存在性判定、奇妙的完全二叉搜索树、最小堆路径、文件路由

    03-树1. List Leaves (25) Given a tree, you are supposed to list all the leaves in the order of top do ...

  3. [LeetCode] Inorder Successor in BST 二叉搜索树中的中序后继节点

    Given a binary search tree and a node in it, find the in-order successor of that node in the BST. No ...

  4. DS Tree 已知后序、中序 => 建树 => 求先序

    注意点: 和上一篇的DS Tree 已知先序.中序 => 建树 => 求后序差不多,注意的地方是在aftorder中找根节点的时候,是从右往左找,因此递归的时候注意参数,最好是拿纸和笔模拟 ...

  5. DS Tree 已知先序、中序 => 建树 => 求后序

    参考:二叉树--前序和中序得到后序 思路历程: 在最初敲的时候,经常会弄混preorder和midorder的元素位置.大体的思路就是在preorder中找到根节点(根节点在序列的左边),然后在mid ...

  6. 【Ext.Net学习笔记】01:在ASP.NET WebForm中使用Ext.Net

    Ext.NET是基于跨浏览器的ExtJS库和.NET Framework的一套支持ASP.NET AJAX的开源Web控件,包含有丰富的Ajax运用,其前身是Coolite. 下载地址:http:// ...

  7. Ext.Net学习笔记01:在ASP.NET WebForm中使用Ext.Net

    Ext.Net是一个对ExtJS进行封装了的.net控件库,可以在ASP.NET WebForm和MVC中使用.从今天开始记录我的学习笔记,这是第一篇,今天学习了如何在WebForm中使用Ext.Ne ...

  8. [Swift]LeetCode285. 二叉搜索树中的中序后继节点 $ Inorder Successor in BST

    Given a binary search tree and a node in it, find the in-order successor of that node in the BST. Th ...

  9. [转]WebForm中使用MVC

    本文转自:https://www.cnblogs.com/encoding/articles/3556046.html 前言 掐指一算,3年没写博了,好懒的说... 众所周知,MVC现在越来越火了,不 ...

随机推荐

  1. jQuery可放大预览的图片滑块

    在线演示 本地下载

  2. 3D立方体图片切换动画

    在线演示 本地下载

  3. 20145230《java学习笔记》第七周学习总结

    20145230 <Java程序设计>第7周学习总结 教材学习内容 Lambda语法概览 我们在许多地方都会有按字符串长度排序的需求,如果在同一个方法内,我们可以使用一个byName局部变 ...

  4. SQL性能调优策略

    1.建立索引 2.避免全表扫描 避免使用is null, is not null,这样写会放弃该字段的索引. 如果会出现这种情况,尽量在设计表的时候设置默认值 比较操作符中!= <>等避免 ...

  5. Netsh 命令详解

    1. help帮助指南 2. 常用命令介绍netsh interface ip show addressnetsh interface ip dumpnetsh interface ip dump & ...

  6. 4950: [Wf2017]Mission Improbable

    4950: [Wf2017]Mission Improbable Time Limit: 1 Sec  Memory Limit: 512 MBSubmit: 608  Solved: 222[Sub ...

  7. [BZOJ4730][清华集训2016][UOJ266] Alice和Bob又在玩游戏

    题意:俩智障又在玩游戏.规则如下: 给定n个点,m条无向边(m<=n-1),保证无环,对于每一个联通块,编号最小的为它们的根(也就是形成了一片这样的森林),每次可以选择一个点,将其本身与其祖先全 ...

  8. vc 判断当前用户是否在管理员组以及是否SYSTEM权限运行

    BOOL IsUserInAdminGroup() //判断是否在管理员组 { BOOL fInAdminGroup = FALSE; HANDLE hToken = NULL; HANDLE hTo ...

  9. Xcode 查找 TODO 清单

    在 Xcode 中按 Shift+Command+F,显示在项目中查找窗口,选择按正则表达式查找(Find > Regular Expression): TODO:  //\s*\bTODO\s ...

  10. rootless内核保护开关

    关闭: csrutil disable 需要重启. 开启: csrutil enable 查看状态: csrutil status