本地测试地址例如http://localhost:6541/TreeExam/AuthorityTree

TreeExam 是TreeExamController

AuthorityTree是TreeExamController内的AuthorityTree()方法

InitTree()方法未读取xml

InitTree2()和InitTree3()两种方法读取xml

----------------------Views---------AuthorityTree.cshtml------------------------------

@{

Layout = null;
}

<!DOCTYPE html>

<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>AuthorityTree</title>
@*下载easyui 包 引入*@
<link rel="stylesheet" type="text/css" href="@Url.Content("~/Content/Jquery_EasyUI/jQuery.easyui.1.2.2 Demo/js/themes/default/easyui.css")" />
<link rel="stylesheet" type="text/css" href="@Url.Content("~/Content/Jquery_EasyUI/jQuery.easyui.1.2.2 Demo/js/themes/icon.css")" />
<script src="@Url.Content("~/Content/Jquery.js")" type="text/javascript"></script>
<script type="text/javascript" src="@Url.Content("~/Content/Jquery_EasyUI/jQuery.easyui.1.2.2 Demo/js/jquery.easyui.min.1.2.2.js")"></script>
<script type="text/javascript">
$(function () {
$('#authorityTbl').treegrid({
title: '权限列表',
iconCls: 'icon-save',
width: $(document).width() * 0.80,
height: 500,
nowrap: false,
animate: true,
collapsible: true,
loadMsg: "数据加载中,请稍后...",
fitColumns: true,
url: '@Url.Content("~/TreeExam/InitTree3")',@*InitTree,InitTree2,InitTree3分别是三种方式实现easyui*@
idField: 'AuthorityID',
treeField: 'AuthorityName',
columns: [[
{ field: 'AuthorityID', title: '权限id', width: 200 },
{ field: 'AuthorityName', title: '权限名称', width: 300 },
{ field: 'Remark', title: '备注', width: 200 },
{ field: 'ParentID', title: '父级', width: 200 }
]],
toolbar: [{
text: '',
iconCls: 'icon-add',
handler: function () {

}
}, '-',
{
text:'',
iconCls:'icon-edit',
handler:function(){

}
}, '-',
{
text: '',
iconCls: 'icon-remove',
handler: function () {

}
}, '-'],
onLoadSuccess: function () {
$('#authorityTbl').treegrid('collapseAll');
}
})
})
</script>
</head>
<body>
<div id="listDiv">
<table id="authorityTbl" toolbar="#searchbar" class="easyui-treegrid" tbl="list">
</table>
</div>
</body>
</html>

----------------------Controller---------TreeExamController.cs--------------------------

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Collections;
using System.Xml;
using System.Data;

namespace MvcStudy3.Controllers
{
public class TreeExamController : Controller
{

//[HttpGet]
public ActionResult AuthorityTree()
{
return View();
}

#region InitTree()
public string InitTree()
{
string result = "";
IList<Authority> list = GetAuthorityList("",4);

foreach (Authority node in list)
{
result += Recursion(node) + ",";
}
return "[" + result.TrimEnd(',') + "]";
}

// 递归树形
public string Recursion(Authority model)
{
string res_s = "";
//你想要在视图中得到的值
res_s += "{\"AuthorityID\":\"" + model.AuthorityID + "\",\"AuthorityName\":\"" +
model.AuthorityName + "\",\"ParentID\":\"" + model.ParentID +
"\",\"iconPath\":\"" + model.IconPath + "\",\"AuthorityPath\":\"" + model.AuthorityPath +
"\",\"Remark\":\"" + model.Remark + "\"";

IList<Authority> list = GetAuthorityList(model.AuthorityID, 3);
if (list != null)
{
res_s += "," + "\"children\":[";
for (int i = 0; i < list.Count; i++)
{
if (i > 0)
res_s += ",";
res_s += Recursion2(list[i]);
}
res_s += "]";
};
res_s += "}";
return res_s;
}

public string Recursion2(Authority model)
{
string res_s = "";
//你想要在视图中得到的值
res_s += "{\"AuthorityID\":\"" + model.AuthorityID + "\",\"AuthorityName\":\"" +
model.AuthorityName + "\",\"ParentID\":\"" + model.ParentID +
"\",\"iconPath\":\"" + model.IconPath + "\",\"AuthorityPath\":\"" + model.AuthorityPath +
"\",\"Remark\":\"" + model.Remark + "\"";
res_s += "}";
return res_s;
}

public IList<Authority> GetAuthorityList(string pid, int c)
{
IList<Authority> list = new List<Authority>();
for (int i = 0; i < c; i++)
{
list.Add(getAuthority(pid, i));
}
return list;
}

/// <summary>
///
/// </summary>
/// <param name="pid">父目录id</param>
/// <param name="c">需要的个数</param>
/// <returns></returns>
public Authority getAuthority(string pid,int i)
{
Authority a = new Authority();
if (string.IsNullOrEmpty(pid))
{
a.AuthorityID = i.ToString();
a.AuthorityName = i+"name";
a.AuthorityPath = i+"authoritypath";
a.IconPath = i+"iconpath";
a.ParentID = "0";
a.Remark = i+"remark";
}
else
{
a.AuthorityID = pid+""+i;
a.AuthorityName = pid+""+i+"name";
a.AuthorityPath = pid + "" + i + "authoritypath";
a.IconPath = pid + "" + i + "iconpath";
a.ParentID = pid;
a.Remark = pid + "" + i + "remark";
}
return a;
}
#endregion
#region InitTree2()
public string InitTree2()
{
string result = "";
IList<Authority> list = getXml();
IList<Authority> ll = getSelectList(list,"0");
foreach (Authority node in ll)
{
result += Recursion1(node,list) + ",";
}
return "[" + result.TrimEnd(',') + "]";
}

// 递归树形
public string Recursion1(Authority model,IList<Authority> list)
{
string res_s = "";
//你想要在视图中得到的值
res_s += "{\"AuthorityID\":\"" + model.AuthorityID + "\",\"AuthorityName\":\"" +
model.AuthorityName + "\",\"ParentID\":\"" + model.ParentID +
"\",\"iconPath\":\"" + model.IconPath + "\",\"AuthorityPath\":\"" + model.AuthorityPath +
"\",\"Remark\":\"" + model.Remark + "\"";

IList<Authority> list2 = getSelectList(list,model.AuthorityID);
if (list2 != null)
{
res_s += "," + "\"children\":[";
for (int i = 0; i < list2.Count; i++)
{
if (i > 0)
res_s += ",";
res_s += Recursion1(list2[i],list);
}
res_s += "]";
};
res_s += "}";
return res_s;
}

public IList<Authority> getSelectList(IList<Authority> list,string pid)
{
IList<Authority> ll =list.Where(p => p.ParentID == pid).ToList<Authority>();//用Where可以筛选list内容,Select不能筛选
return ll;
}

public IList<Authority> getXml()
{
IList<Authority> list = new List<Authority>();
XmlNode node;
XmlDocument xd = new XmlDocument();//定义一个xmldocument对象
string xmlpath = Server.MapPath("~/Files/XMLFile1.xml");//加载xml文件
xd.Load(@xmlpath);
XmlElement tree = xd.DocumentElement;
for (int i = 0; i < tree.ChildNodes.Count; i++)//对根子节点的所有子节点进行循环
{
node = tree.ChildNodes[i];

if (node.HasChildNodes)
{
XmlNode childnode = node.ChildNodes[0];
getAuthority(childnode,node,list);
}
}
return list;
}

public IList<Authority> getAuthority(XmlNode childnode, XmlNode node, IList<Authority> list)
{
Authority a = new Authority();
a.AuthorityID = childnode.InnerText;
childnode = node.ChildNodes[1];
a.AuthorityName = childnode.InnerText;
childnode = node.ChildNodes[3];
a.ParentID = childnode.InnerText;
childnode = node.ChildNodes[5];
a.Remark = childnode.InnerText;
if (node.ChildNodes.Count > 6)
{
childnode = node.ChildNodes[6];
if (childnode.HasChildNodes)
{
XmlNode childn = childnode.ChildNodes[0];
getAuthority(childn, childnode, list);
}
}
list.Add(a);
return list;
}
#endregion

#region 读取xml ds.ReadXml(xmlpath);
public string InitTree3()
{
string result = "";
DataSet ds = new DataSet();
string xmlpath = Server.MapPath("~/Files/XMLFile1.xml");//xml文件的相对位置
ds.ReadXml(xmlpath);
IList<Authority> list = getXml3(ds);

foreach (Authority node in list)
{
result += Recursion3(node,ds,1) + ",";
}
return "[" + result.TrimEnd(',') + "]";
}

public IList<Authority> getXml3(DataSet ds)
{
IList<Authority> list = new List<Authority>();
DataTable dt = ds.Tables[0];//获取第一级的节点内容
foreach (DataRow dr in dt.Rows)
{
Authority a = new Authority();
a.AuthorityID = dr["AuthorityID"].ToString();
a.AuthorityName = dr["AuthorityName"].ToString();
a.ParentID=dr["ParentID"].ToString();
a.Remark = dr["Remark"].ToString();
list.Add(a);
}
return list;
}
// 递归树形
public string Recursion3(Authority model,DataSet ds,int count)
{
string res_s = "";
//你想要在视图中得到的值
res_s += "{\"AuthorityID\":\"" + model.AuthorityID + "\",\"AuthorityName\":\"" +
model.AuthorityName + "\",\"ParentID\":\"" + model.ParentID +
"\",\"iconPath\":\"" + model.IconPath + "\",\"AuthorityPath\":\"" + model.AuthorityPath +
"\",\"Remark\":\"" + model.Remark + "\"";

IList<Authority> list = GetAuthorityList(model.AuthorityID, ds,count);
if (list != null)
{
res_s += "," + "\"children\":[";
for (int i = 0; i < list.Count; i++)
{
if (i > 0)
res_s += ",";
res_s += Recursion3(list[i],ds,count+1);
}
res_s += "]";
};
res_s += "}";
return res_s;
}

public IList<Authority> GetAuthorityList(string aid,DataSet ds,int count)
{
IList<Authority> list = new List<Authority>();
if (ds.Tables.Count > count)
{
DataTable dt = ds.Tables[count];
DataRow[] drlist = dt.Select(string.Format("ParentID='{0}'", aid));
foreach (DataRow dr in drlist)
{
Authority a = new Authority();
a.AuthorityID = dr["AuthorityID"].ToString();
a.AuthorityName = dr["AuthorityName"].ToString();
a.ParentID = dr["ParentID"].ToString();
a.Remark = dr["Remark"].ToString();
list.Add(a);
}
return list;
}
else
{
return null;
}
}
#endregion
}

public class Authority
{
public string AuthorityID { get; set; }
public string AuthorityName { get; set; }
public string IconPath { get; set; }
public string ParentID { get; set; }
public string AuthorityPath { get; set; }
public string Remark { get; set; }
}
}

----------------XMLFile1.xml 文件----------------------------------------------

红色部分是节点名称,可以随便命名

<?xml version="1.0" encoding="utf-8" ?>
<authority>
<a>
<AuthorityID>1</AuthorityID>
<AuthorityName>1name</AuthorityName>
<IconPath>1iconpath</IconPath>
<ParentID>0</ParentID>
<AuthorityPath>1authoritypath</AuthorityPath>
<Remark>1remak</Remark>
<b>
<AuthorityID>11</AuthorityID>
<AuthorityName>11name</AuthorityName>
<IconPath>11iconpath</IconPath>
<ParentID>1</ParentID>
<AuthorityPath>11authoritypath</AuthorityPath>
<Remark>11remak</Remark>
<c>
<AuthorityID>111</AuthorityID>
<AuthorityName>111name</AuthorityName>
<IconPath>111iconpath</IconPath>
<ParentID>11</ParentID>
<AuthorityPath>111authoritypath</AuthorityPath>
<Remark>111remak</Remark>
</c>
</b>
</a>
<a>
<AuthorityID>2</AuthorityID>
<AuthorityName>2name</AuthorityName>
<IconPath>2iconpath</IconPath>
<ParentID>0</ParentID>
<AuthorityPath>2authoritypath</AuthorityPath>
<Remark>2remak</Remark>
<b>
<AuthorityID>21</AuthorityID>
<AuthorityName>21name</AuthorityName>
<IconPath>21iconpath</IconPath>
<ParentID>2</ParentID>
<AuthorityPath>21authoritypath</AuthorityPath>
<Remark>21remak</Remark>
</b>
</a>
<a>
<AuthorityID>3</AuthorityID>
<AuthorityName>3name</AuthorityName>
<IconPath>3iconpath</IconPath>
<ParentID>0</ParentID>
<AuthorityPath>3authoritypath</AuthorityPath>
<Remark>3remak</Remark>
<b>
<AuthorityID>31</AuthorityID>
<AuthorityName>31name</AuthorityName>
<IconPath>31iconpath</IconPath>
<ParentID>3</ParentID>
<AuthorityPath>31authoritypath</AuthorityPath>
<Remark>31remak</Remark>
</b>
</a>
</authority>

easyui及读取xml的更多相关文章

  1. 读取xml数据装配到字典中之应用场景

    前段时间看到支付宝设置里面有个多语言这个功能,蛮有意思的,就想双休没事的话做个相关的demo玩玩,可是礼拜六被妹子拽出去玩了一天,来大上海有大半年了,基本没有出去玩过,妹子说我是超级宅男,也不带她出去 ...

  2. 自己动手之使用反射和泛型,动态读取XML创建类实例并赋值

    前言: 最近小匹夫参与的游戏项目到了需要读取数据的阶段了,那么觉得自己业余时间也该实践下数据相关的内容.那么从哪入手呢?因为用的是Unity3d的游戏引擎,思来想去就选择了C#读取XML文件这个小功能 ...

  3. MFC如何读取XML

    <?xml version="1.0" encoding="utf-8"?> <Cases> <case> <No&g ...

  4. 使用dom4j读取xml连接数据库与之单例模式

    使用dom4j读取xml ,加入jar包 dom4j-1.6.1.jar jaxen-1.1-beta-6.jar public class XmlConfigReader { //懒汉式,延迟加载 ...

  5. java DOM4J 读取XML

    最近学习Java,在处理XML文档的时候,查阅相关资料,发现了DOM4J这个jre库,相对C#的XML处理来说,功能还算是跟得上 下面展示一篇我自己写的一个XML读取测试 import java.ut ...

  6. C#中常用的读取xml的几种方法(转)

    本文完全来源于http://blog.csdn.net/tiemufeng1122/article/details/6723764,仅作个人学习之用. XML文件是一种常用的文件格式,例如WinFor ...

  7. wcf序列化大对象时报错:读取 XML 数据时,超出最大

    错误为: 访问服务异常:格式化程序尝试对消息反序列化时引发异常: 尝试对参数 http://tempuri.org/ 进行反序列化时出 错: request.InnerException 消息是“反序 ...

  8. C#中常用的几种读取XML文件的方法

    1.C#中常用的几种读取XML文件的方法:http://blog.csdn.net/tiemufeng1122/article/details/6723764/

  9. 利用反射与dom4j读取javabean生成对应XML和读取XML得到对应的javabean对象集合

    转自:http://blog.csdn.net/zhao19861029/article/details/8473245 首先实现生成对应的JAVAbean的XML文件方法 /** * DMO4J写入 ...

随机推荐

  1. Unity 游戏框架搭建 2019 (三十九、四十一) 第四章 简介&方法的结构重复问题&泛型:结构复用利器

    第四章 简介 方法的结构重复问题 我们在上一篇正式整理完毕,从这一篇开始,我们要再次进入学习收集示例阶段了. 那么我们学什么呢?当然是学习设计工具,也就是在上篇中提到的关键知识点.这些关键知识点,大部 ...

  2. springboot docker jenkins 自动化部署并上传镜像

    springboot + docker + jenkins自动化部署项目,jenkins.mysql.redis都是docker运行的,并且没有使用虚拟机,就在阿里云服务器(centos7)运行 1. ...

  3. HDU 4009 Transfer water(最小树形图)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4009 题意:给出一个村庄(x,y,z).每个村庄可以挖井或者修建水渠从其他村庄得到水.挖井有一个代价, ...

  4. #Week1 Introduction

    一.What is Machine Learning 课程里主要给了两个供参考的定义: By Arthur Samuel: Field of study that gives computers th ...

  5. Codeforce 1251C. Minimize The Integer

    C. Minimize The Integer time limit per test2 seconds memory limit per test256 megabytes inputstandar ...

  6. Nmon 监控性能分析

    一.CPU 信息 1.折线图中蓝线为 cpu 占有率变化情况:粉线为磁盘 IO 的变化情况: 2.下面表各种左边的位磁盘的总体数据,包括如下几个: Avg tps during an interval ...

  7. 一个简单的wed服务器SHTTPD(8)———— URI分析

    //start from the very beginning,and to create greatness //@author: Chuangwei Lin //@E-mail:979951191 ...

  8. 5) ModelSerializer(重点) 基表 测试脚本 多表关系建外键 正反查 级联 插拔式连表 序列化反序列化整合 增删查 封装response

    一.前戏要做好 配置:settings.py #注册drf INSTALLED_APPS = [ # ... 'api.apps.ApiConfig', 'rest_framework', ] ​ # ...

  9. python文件路径分隔符的详细分析

    写了挺久的python,文件分隔符的掌握肯定是必须的,但是我之前写的都是不规范的文件路径分隔符,例如‘’C:\User\temp\python.txt’,一直都没有报过错.也不知为啥,今天查阅资料才知 ...

  10. 一文带你深入了解 Lambda 表达式和方法引用

    前言 尽管目前很多公司已经使用 Java8 作为项目开发语言,但是仍然有一部分开发者只是将其设置到 pom 文件中,并未真正开始使用.而项目中如果有8新特性的写法,例如λ表达式.也只是 Idea Al ...