cs-SelectTree-DropTreeNode, SelectTreeList
| ylbtech-Unitity: cs-SelectTree-DropTreeNode, SelectTreeList |
DropTreeNode.cs SelectTreeList.cs
| 1.A,效果图返回顶部 |
| 1.B,源代码返回顶部 |
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的更多相关文章
- [C#] 剖析 AssemblyInfo.cs - 了解常用的特性 Attribute
剖析 AssemblyInfo.cs - 了解常用的特性 Attribute [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/5944391.html 序 ...
- Atitit 软件架构方法的进化与演进cs bs soa roa msa attilax总结
Atitit 软件架构方法的进化与演进cs bs soa roa msa attilax总结 1.1. 软件体系架构是沿着单机到 CS 架构,再到 BS 的三层架构甚至多层架构逐步发展过来的,关于 ...
- 从java文件和CS文件里查询方法使用次数工具
前几天,领导让我找一下老系统(Java)里getRemoteUser方法都哪个文件用了,package是什么,方法被调用了多少次,当时因为着急,所以,直接人工找的,但是以后要是再出现,人工找就太讨厌了 ...
- 关于 WP 开发中.xaml 与.xaml.cs 的关系
今天我们先来看一下在WP8.1开发中最长见到的几个文件之间的关系.比较论证,在看这个问题之前我们简单看看.NET平台其他两个不同的框架: Windows Forms 先看看Window Forms中的 ...
- .net 用户控件ascx.cs注册js脚本代码无效果
在.net web项目中碰到一个比较奇怪的问题,网上没找到解决方案,先自己mark一下 问题描述: 添加一个用户控件ascx,在后端.cs添加js注册脚本,执行后没有弹出框 注册脚本为: this.P ...
- DateHelper.cs日期时间操作辅助类C#
//==================================================================== //** Copyright © classbao.com ...
- 仅用aspx文件实现Ajax调用后台cs程序。(实例)
仅用aspx文件实现Ajax调用后台cs无刷新程序.(实例) 两个文件:aaa.aspx 和aaa.aspx.cs 一.aaa.aspx <script type="text/java ...
- Etw EventSourceProvider_EventsProducer.cs OopConsoleTraceEventListenerMonitor_TraceControllerEventsConsumer.cs
// EventSourceProvider_EventsProducer.cs /* /r:"D:\Microshaoft.Nuget.Packages\Microsoft.Diagnos ...
- WPF根据Oracle数据库的表,生成CS文件小工具
开发小工具的原因: 1.我们公司的开发是客户端用C#,服务端用Java,前后台在通讯交互的时候,会用到Oracle数据库的字段,因为服务器端有公司总经理开发的一个根据Oracle数据库的表生成的cla ...
随机推荐
- bzoj 3196二逼平衡树 线段树套平衡树
比较裸的树套树,对于区间K值bz上有一道裸题,详见题解http://www.cnblogs.com/BLADEVIL/p/3455336.html(其实题解也不是很详细) //By BLADEVIL ...
- 如何利用好chrome控制台这个神器好好调试javascript代码
上面的文章已经大致介绍了一下console对象具体有哪些方面以及基本的应用,下面简单介绍一下如何利用好chrome控制台这个神器好好调试javascript代码(这个才是我们真正能用到实处的地方) 1 ...
- POJ3180(有向图强连通分量结点数>=2的个数)
The Cow Prom Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 1451 Accepted: 922 Descr ...
- linux 环境变量设置方法总结(PATH/LD_LIBRARY_PATH)
linux 环境变量设置方法总结(PATH/LD_LIBRARY_PATH) http://blog.csdn.net/wangeen/article/details/8159500 设置 Linux ...
- Javascript制作放大镜
方法一 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8 ...
- k8s的存储Volume
1.Volume简介 我们经常会说:容器和 Pod 是短暂的.其含义是它们的生命周期可能很短,会被频繁地销毁和创建.容器销毁时,保存在容器内部文件系统中的数据都会被清除. 为了持久化保存容器的数据,可 ...
- Java中的标记接口(zz)
1.什么是标记接口? Java中把没有定义任何方法和常量的接口称之为标记接口,我们经常使用的比较多的是“”Serializable“”,这个接口也是没有定义人任何方法和常量的. 2.标记接口的作用? ...
- 开放API端口SIGN算法详细设计
开放API端口SIGN算法详细设计 前言 在app开放接口api的设计中,避免不了的就是安全性问题,因为大多数接口涉及到用户的个人信息以及一些敏感的数据,所以对这些接口需要进行身份的认证,那么这就需要 ...
- 常用的LUA片段
生成TS的办法 local t=ngx.now(); local n=os.date(,); n=n..-string.len(n)); ngx.say(n); 产生101至200的所有素数 func ...
- C# 对话框使用大全
对话框中我们常用了以下几种:1.文件对话框(FileDialog) 它又常用到两个: 打开文件对话框(OpenFileDialog) 保存文件对话(SaveFileDialog)2.字体对话框(Fon ...
