easyui及读取xml

 

本地测试地址例如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>

posted @ 2013-12-23 17:15  JIN__JIN  阅读(743)  评论(0编辑  收藏  举报