一、Tree控件应用

  <f:PageManager ID="PageManager1" runat="server" />
<f:Tree ID="Tree1" Width="650px" ShowHeader="true" Title="树控件" EnableFrame="true" EnableCollapse="true"
runat="server">
<Nodes>
<f:TreeNode Text="中国" Expanded="true">
<f:TreeNode Text="111" Expanded="true">
<f:TreeNode Text="222" NodeID="zhumadian">
<f:TreeNode Text="333" Leaf="false" NodeID="suiping">
<f:TreeNode Text="444" Leaf="false" NodeID="huaishu">
<f:TreeNode Text="555" NodeID="chenzhuang">
</f:TreeNode>
</f:TreeNode>
</f:TreeNode>
</f:TreeNode>
<f:TreeNode Text="666" NodeID="luohe" />
</f:TreeNode>
<f:TreeNode Text="777" Expanded="true" NodeID="anhui">
<f:TreeNode Text="888" Expanded="true" NodeID="hefei">
<f:TreeNode Text="999" NodeID="golden">
</f:TreeNode>
<f:TreeNode Text="000" NodeID="ustc">
</f:TreeNode>
</f:TreeNode>
</f:TreeNode>
</f:TreeNode>
</Nodes>
</f:Tree>

二、后台代码 动态生成Tree 帮定数据库

   /// <summary>
/// 绑定Tree
/// </summary>
/// <returns></returns>
private DataSet GetDataSet()
{
CommUserBLL bll = new CommUserBLL();
DataSet ds = bll.GetAllList(); foreach (DataRow row in ds.Tables[].Rows)
{
FineUI.TreeNode node = new FineUI.TreeNode();
if (row.IsNull("PersonGroupID"))
{
node.Text = row["CompName"].ToString();
node.IconUrl = "~/icon/star.png";
node.Expanded = true;
node.EnableCheckBox = true;
node.EnablePostBack = true;
node.AutoPostBack = true;
Tree1.Nodes.Add(node);
LoadTree(node);
}
}
return ds;
} /// <summary>
/// 加载子节点
/// </summary>
/// <param name="treeNode"></param>
private void LoadTree(FineUI.TreeNode treeNode)
{
CommUserBLL bll = new CommUserBLL();
DataSet dept = bll.GetDepetName();
foreach (DataRow row in dept.Tables[].Rows)
{
FineUI.TreeNode node2 = new FineUI.TreeNode();
node2.Expanded = true;
node2.EnableCheckBox = true;
node2.EnablePostBack = true;
node2.AutoPostBack = true;
node2.IconUrl = "~/icon/star.png";
node2.Text = row["DeptName"].ToString(); treeNode.Nodes.Add(node2);
LoadPerson(row, node2);
}
} /// <summary>
/// 加载叶子节点
/// </summary>
/// <param name="dr"></param>
/// <param name="treeNode"></param>
private void LoadPerson(DataRow dr, FineUI.TreeNode treeNode)
{
CommUserBLL bll = new CommUserBLL();
StringBuilder str = new StringBuilder();
DataSet deptPerson = bll.GetList(" deptname = '" + dr["DeptName"].ToString() + "'");
foreach (DataRow row in deptPerson.Tables[].Rows)
{
FineUI.TreeNode node3 = new FineUI.TreeNode(); node3.EnablePostBack = true;
node3.AutoPostBack = true;
node3.Expanded = true;
node3.EnableCheckBox = true; node3.IconUrl = "~/icon/star.png"; node3.Text = row["PersonName"].ToString() + "(" + row["PhoneNo"].ToString() + ")";
treeNode.Nodes.Add(node3);
}
} /// <summary>
/// 选择节点事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Tree1_NodeCheck(object sender, FineUI.TreeCheckEventArgs e)
{
if (!e.Node.Leaf)
{
CheckTreeNode(e.Node.Nodes, e.Checked);
}
FineUI.TreeNodeCollection nodes = Tree1.Nodes; StringBuilder sbTree = new StringBuilder(); sbTree = GetTreeNode(nodes, sbTree);
tbxMessPre.Text = sbTree.ToString();
} /// <summary>
/// 获得选择节点
/// </summary>
/// <param name="nodes"></param>
/// <param name="strTree"></param>
/// <returns></returns>
private StringBuilder GetTreeNode(FineUI.TreeNodeCollection nodes, StringBuilder strTree)
{
foreach (FineUI.TreeNode node in nodes)
{
if (node.Leaf)
{
if (node.Checked)
{
strTree.Append(node.Text.Trim() + ",");
}
}
else
{
GetTreeNode(node.Nodes, strTree);
}
}
return strTree;
} /// <summary>
/// 检查选中节点
/// </summary>
/// <param name="nodes"></param>
/// <param name="isChecked"></param>
private void CheckTreeNode(FineUI.TreeNodeCollection nodes, bool isChecked)
{
foreach (FineUI.TreeNode node in nodes)
{
node.Checked = isChecked;
if (!node.Leaf)
{
CheckTreeNode(node.Nodes, isChecked);
}
}
}

FineUI控件之树的应用(二)的更多相关文章

  1. 如何优化 FineUI 控件库的性能,减少 80% 的数据上传量!

    在开始正文之前,请帮忙为当前排名前 10 唯一的 .Net 开源软件 FineUI 投一票: 投票地址: https://code.csdn.net/2013OSSurvey/gitop/codevo ...

  2. WPF 曲线图表控件(自制)(二)

    原文:WPF 曲线图表控件(自制)(二) 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/koloumi/article/details/775218 ...

  3. Android开发:文本控件详解——TextView(二)文字跑马灯效果实现

    一.需要使用的属性: 1.android:ellipsize 作用:若文字过长,控制该控件如何显示. 对于同样的文字“Android开发:文本控件详解——TextView(二)文字跑马灯效果实现”,不 ...

  4. FineUI控件集合

    FineUI(开源版)基于 ExtJS 的开源 ASP.NET 控件库. using System; using System.Collections.Generic; using System.Te ...

  5. 自己定义控件三部曲视图篇(二)——FlowLayout自适应容器实现

    前言:我最大的梦想,就是有一天.等老了坐在摇椅上回望一生,有故事给孩子们讲--. 相关文章: <Android自己定义控件三部曲文章索引>:http://blog.csdn.net/har ...

  6. Winform中使用printDocument控件打印pictureBox中的二维码照片

    场景 Winform中使用zxing和Graphics实现自定义绘制二维码布局: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/1 ...

  7. PyQt5复杂控件(树控件、选项卡控件(滚动条控件、多文档控件、停靠控件)

    1.树控件的基本使用方法QTreeWidget'''QTreeWidget树控件的使用方法添加图标,添加表格,添加复选框等'''from PyQt5.QtWidgets import *from Py ...

  8. .NET中的FileUpload控件的使用-原生JS(二)

    本篇使用原生JS进行数据传输,使用FileUpload控件上传文件,适配IE. HTML <div class="container"> <div class=& ...

  9. android(eclipse)界面控件以及活动总结(二)

    用户界面以及活动总结: (复习时忘了的特别标记了下划线,补充的用了红色) 1用户界面: ~android:id=""专门用于找到指定界面的索引 如果要在后面的程序中调用该控件,则一 ...

随机推荐

  1. SignalR2.0开发实例之——负载均衡

    SignalR 2.0作为一个新的而且强大的通信工具,发布博客之后得到了很多人的支持,谢谢...也有人对性能和架设等问题提出了各种质疑..真的很感谢.. 我特意下载了SignalR 2.0的源码硬着头 ...

  2. java 修改文件名

    // 修改文件名 public static boolean modifyFileName(String serverPath, String oldFileName, String newLogin ...

  3. window对象BOM

    BOM的和新对象是window,他表示流浪器的一个实例,作为一个Global对象,有权访问parseInt()等方法 在全局作用域声明的变量,函数都有钱访问 ; function sayName () ...

  4. UVALive - 5116

    dfs n以内所有素数的乘积map或set删多余的,有点思维在里面,就写写

  5. Linux 编译安装httpsqs

    wget http://httpsqs.googlecode.com/files/libevent-2.0.12-stable.tar.gz tar zxvf libevent-2.0.12-stab ...

  6. Java系列--第七篇 基于Maven的Android开发实战项目

    本篇是基于<Android应用案例开发大全,吴亚峰等著>的项目开发实例源码,其中有些图片,我做了一些修改,用于个人学习,请勿用于商业. 1, 日程管理专家 mvn archetype:ge ...

  7. ECSTORE2.0 下载 (变量标签)

    条目 用途 备注 coupon.mc.use_times 优惠券可用次数 - security.guest.enabled 是否支持非会员购物 - site.version version的最后修改时 ...

  8. python之6-5偏函数

    functools.partial 偏函数的作用是简化操作,简化什么操作呢?就是当我们有一个已知函数A,且这个函数包含有某个或多个参数A1,通过固定这个参数A1,我们可以自己编写一个新函数B,来减少代 ...

  9. pyzmq简单的在线聊天室

    #encoding=utf-8#客户端 import zmq c = zmq.Context() s = c.socket(zmq.REQ) s.connect('tcp://127.0.0.1:10 ...

  10. 容器 SET part2

    (6) insert   STL中为什么提供这样的set的insert呢? 这个成员函数存在的目的是为了插入效率的问题.函数参数中的 __position 只是一个提示值,表示在这个位置附近(可前可后 ...