本地测试地址例如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. RabbitMQ小结

    1.帮助文档 rabbitmq官网:http://www.rabbitmq.com/ rabbitmq谷歌论坛:https://groups.google.com/forum/#!forum/rabb ...

  2. WPF QuickStart系列之样式和模板(Style and Template)

    在WPF桌面程序中,当我们想构建一个统一的UI表现时(在不同操作系统下,显示效果一致),此时我们就需要使用到WPF中的样式和模板技术.简单来说,如果我们需要简单的给一个Button设置宽,高,Marg ...

  3. Component creation must be done on Event Dispatch Thread错误解决方法

    在用java swing 做例子,给页面设置皮肤样式的时候出现了这个错误: org.jvnet.substance.api.UiThreadingViolationException: Compone ...

  4. select into from 和 insert into select 的区别和用法及 SQL SELECT INTO 中Undeclared variable错误解决办法

    今天试了一下数据表中的数据备份到另一个空的数据表,然后使用了SQL SELECT INTO语句,然后提示Undeclared variable......错误,现在在这里做下总结并给出解决办法. 应用 ...

  5. Type-base dispatch

    In the previous section we added two Time objects, but you also might want to add an integer to a Ti ...

  6. Grails连接外部数据库注意事项Could not determine Hibernate dialect for database name [Oracle]!

    初次使用Grails时,使用其内置数据库,一直不会出错,但迁移到外部数据库时会出错Could not determine Hibernate dialect for database name [Or ...

  7. Ubuntu14.04安装PostpreSQL9.3.5记录

    安装参考:http://www.postgresql.org/download/linux/ubuntu/ y@y:~$ sudo apt-get install postgresql-9.3 pos ...

  8. reshape2 数据操作 数据融合 (melt)

    前面一篇讲了cast,想必已经见识到了reshape2的强大,当然在使用cast时配合上melt这种强大的揉数据能力才能表现的淋漓尽致. 下面我们来看下,melt这个函数以及它的特点. melt(da ...

  9. mysql TIMESTAMP与DATATIME的区别---转载加自己的看法

    from:http://lhdeyx.blog.163.com/blog/static/318196972011230113645715/ from:http://blog.csdn.NET/zht6 ...

  10. php基础知识(三)---常用函数--2017-04-16

    常用函数如下:(红色为重点) 1.取字符串的长度 echo strlen("hello"); 2.echo strcmp("字符串1","字符串2&q ...