ylbtech-Unitity: cs-SelectTree-DropTreeNode, SelectTreeList

DropTreeNode.cs SelectTreeList.cs

1.A,效果图返回顶部
 
1.B,源代码返回顶部
1.B.1,DropTreeNode.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace Healthcare.Framework.Web.Mvc
{
public class DropTreeNode
{
public string RootValue { get; set; }
public string TreeNodeID { get; set; }
public string Text { get; set; }
public string Value { get; set; }
public string ParentTreeNodeID { get; set; } public string Css { get; set; }
} }

1.B.2,SelectTreeList.cs

using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks; namespace Healthcare.Framework.Web.Mvc
{
/// <summary>
/// 树形下拉框
/// </summary>
public class SelectTreeList
{
#region 字段 List<DropTreeNode> treeNodes = new List<DropTreeNode>();
string rootValue = null;
string valueField = null;
string textField = null;
string nodeField = null;
string parentField = null; string css = null; string selectValue = ""; bool isFinalLevel = false; public bool IsFinalLevel
{
get { return isFinalLevel; }
set { isFinalLevel = value; }
} public string SelectValue
{
get { return selectValue; }
set { selectValue = value; }
} #endregion #region 构造函数 /// <summary>
/// 构造函数
/// </summary>
/// <param name="items">项集合</param>
/// <param name="rootValue">根元素字段</param>
/// <param name="textField">显示文本字段</param>
/// <param name="nodeField">节点字段</param>
/// <param name="parentField">父节点字段</param>
public SelectTreeList(IEnumerable items, string rootValue, string textField, string nodeField, string parentField)
{
this.rootValue = rootValue;
this.valueField = nodeField;
this.textField = textField;
this.nodeField = nodeField;
this.parentField = parentField;
Validate();
Init(items);
} /// <summary>
/// 构造函数
/// </summary>
/// <param name="items">项集合</param>
/// <param name="rootValue">根元素字段</param>
/// <param name="valueField">获取值字段</param>
/// <param name="textField">显示文本字段</param>
/// <param name="nodeField">节点字段</param>
/// <param name="parentField">父节点字段</param>
public SelectTreeList(IEnumerable items, string rootValue, string textField, string nodeField, string parentField, string valueField, string selectValue, bool isFinalLevel = false, string Css="")
{
this.rootValue = rootValue;
this.valueField = valueField;
this.textField = textField;
this.nodeField = nodeField;
this.parentField = parentField;
this.selectValue = selectValue;
this.isFinalLevel = isFinalLevel;
this.css = Css; Validate();
Init(items);
} #endregion /// <summary>
/// 验证各个参数的有效性
/// </summary>
public void Validate()
{
StringBuilder sb = new StringBuilder();
if (string.IsNullOrEmpty(valueField))
sb.AppendLine("获取值字段不能为空");
if (string.IsNullOrEmpty(textField))
sb.AppendLine("显示文本字段不能为空");
if (string.IsNullOrEmpty(nodeField))
sb.AppendLine("节点字段不能为空");
if (string.IsNullOrEmpty(parentField))
sb.AppendLine("父节点字段字段不能为空");
if (sb.Length > )
throw new Exception("验证错误:" + sb.ToString());
} /// <summary>
/// 初始化TreeNodes集合
/// </summary>
/// <param name="items"></param>
public void Init(IEnumerable items)
{
foreach (var item in items)
{
DropTreeNode treeNode = new DropTreeNode();
Type type = item.GetType(); PropertyInfo property = type.GetProperty(this.valueField);
object o = property.GetValue(item, null);
treeNode.Value = o.ToString(); property = type.GetProperty(this.textField);
o = property.GetValue(item, null);
treeNode.Text = o.ToString(); property = type.GetProperty(this.nodeField);
o = property.GetValue(item, null);
treeNode.TreeNodeID = o.ToString(); property = type.GetProperty(this.parentField);
o = property.GetValue(item, null);
treeNode.ParentTreeNodeID = o.ToString(); if (!string.IsNullOrEmpty(this.css))
{
property = type.GetProperty(this.css);
o = property.GetValue(item, null);
treeNode.Css = o.ToString();
}
else
treeNode.Css = ""; treeNodes.Add(treeNode);
}
} #region 字段属性 public List<DropTreeNode> TreeNodes
{
get { return treeNodes; }
set { treeNodes = value; }
} public string RootValue
{
get { return rootValue; }
set { rootValue = value; }
} public string ValueField
{
get { return valueField; }
set { valueField = value; }
} public string TextField
{
get { return textField; }
set { textField = value; }
} public string NodeField
{
get { return nodeField; }
set { nodeField = value; }
} public string ParentField
{
get { return parentField; }
set { parentField = value; }
} #endregion
} }

1.B.3,

1.C,下载地址返回顶部
作者:ylbtech
出处:http://ylbtech.cnblogs.com/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

cs-SelectTree-DropTreeNode, SelectTreeList的更多相关文章

  1. [C#] 剖析 AssemblyInfo.cs - 了解常用的特性 Attribute

    剖析 AssemblyInfo.cs - 了解常用的特性 Attribute [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/5944391.html 序 ...

  2. Atitit 软件架构方法的进化与演进cs bs soa roa  msa  attilax总结

    Atitit 软件架构方法的进化与演进cs bs soa roa  msa  attilax总结 1.1. 软件体系架构是沿着单机到 CS 架构,再到 BS 的三层架构甚至多层架构逐步发展过来的,关于 ...

  3. 从java文件和CS文件里查询方法使用次数工具

    前几天,领导让我找一下老系统(Java)里getRemoteUser方法都哪个文件用了,package是什么,方法被调用了多少次,当时因为着急,所以,直接人工找的,但是以后要是再出现,人工找就太讨厌了 ...

  4. 关于 WP 开发中.xaml 与.xaml.cs 的关系

    今天我们先来看一下在WP8.1开发中最长见到的几个文件之间的关系.比较论证,在看这个问题之前我们简单看看.NET平台其他两个不同的框架: Windows Forms 先看看Window Forms中的 ...

  5. .net 用户控件ascx.cs注册js脚本代码无效果

    在.net web项目中碰到一个比较奇怪的问题,网上没找到解决方案,先自己mark一下 问题描述: 添加一个用户控件ascx,在后端.cs添加js注册脚本,执行后没有弹出框 注册脚本为: this.P ...

  6. DateHelper.cs日期时间操作辅助类C#

    //==================================================================== //** Copyright © classbao.com ...

  7. 仅用aspx文件实现Ajax调用后台cs程序。(实例)

    仅用aspx文件实现Ajax调用后台cs无刷新程序.(实例) 两个文件:aaa.aspx 和aaa.aspx.cs 一.aaa.aspx <script type="text/java ...

  8. Etw EventSourceProvider_EventsProducer.cs OopConsoleTraceEventListenerMonitor_TraceControllerEventsConsumer.cs

    // EventSourceProvider_EventsProducer.cs /* /r:"D:\Microshaoft.Nuget.Packages\Microsoft.Diagnos ...

  9. WPF根据Oracle数据库的表,生成CS文件小工具

    开发小工具的原因: 1.我们公司的开发是客户端用C#,服务端用Java,前后台在通讯交互的时候,会用到Oracle数据库的字段,因为服务器端有公司总经理开发的一个根据Oracle数据库的表生成的cla ...

随机推荐

  1. js获取上个月日期

    javascript根据当前日期获取上个月日期 function lastMonthDate(){ var Nowdate = new Date(); var vYear = Nowdate.getF ...

  2. mapper配置文件中的动态SQL

    <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "- ...

  3. Centos安装流量监控工具iftop笔记

    Centos安装流量监控工具iftop笔记 一.概述 iftop可以用来监控网卡的实时流量(可以指定网段).反向解析IP.显示端口信息等,详细的将会在后面的使用参数中说明.官方网站:http://ww ...

  4. 怎样用css来美化一个html页面

    # 转载请留言联系 我们都知道html写出来的东西是一个文本内容,很单调.和我们平时刷网页看到的内容不一样.那普通的网页是怎样对html超文本进行装饰的呢?没错,就是CSS. css的基本语法 选择器 ...

  5. AC日记——[Noi2011]阿狸的打字机 bzoj 2434

    2434 思路: 构建ac自动机: 抽离fail树: 根据字符串建立主席树: 在线处理询问: 询问x在y中出现多少次,等同于y有多少字母的fail能走到x: 1a,hahahahah: 代码: #in ...

  6. HDU 2561 第二小整数(排序,水)

    第二小整数 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submi ...

  7. 百度之星资格赛 2016 Problem 1001

    本文链接http://www.cnblogs.com/Ash-ly/p/5494618.html 题意: 度熊手上有一本字典存储了大量的单词,有一次,他把所有单词组成了一个很长很长的字符串.现在麻烦来 ...

  8. mysql主从复制、读写分离

    一.MySql介绍 MySQL作为世界上使用最为广泛的数据库之一,免费是其原因之一.但不可忽略的是它本身的功能的确很强大.随着技术的发展,在实际的生产环境中,由单台MySQL数据库服务器不能满足实际的 ...

  9. 大数据技术之_16_Scala学习_07_数据结构(上)-集合

    第十章 数据结构(上)-集合10.1 数据结构特点10.1.1 Scala 集合基本介绍10.1.2 可变集合和不可变集合举例10.2 Scala 不可变集合继承层次一览图10.2.1 图10.2.2 ...

  10. 51nod 子序列的个数(动态规划)

    子序列的个数 给定一个正整数序列,序列中元素的个数和元素值大小都不超过105, 求其所有子序列的个数.注意相同的只算一次:例如 {1,2,1}有子序列{1} {2} {1,2} {2,1}和{1,2, ...