zoukankan      html  css  js  c++  java
  • 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',
    $(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', 200 },
    { field: 'AuthorityName', title: '权限名称', 300 },
    { field: 'Remark', title: '备注', 200 },
    { field: 'ParentID', title: '父级', 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>

  • 相关阅读:
    【转载】wpf学习笔记数据绑定9
    【转载】wpf学习笔记5
    paip.c#.net 右键菜单带图标
    SG NPN Reload API V2.1 电话卡充值文档
    paip.url参数格式化.txt
    PAIP.MYSQL数据库比较VC313.TXT
    System.Transactions.Diagnostics.DiagnosticTrace 的类型初始值设定项引发异常。配置系统未能初始化
    paip.提升性能---.net listbox 使用BeginUpdate与EndUpdate
    apache设置域名绑定 以及绑定不起作用的排查.
    paip.php and or 语句用法作用
  • 原文地址:https://www.cnblogs.com/jcz1206/p/3487782.html
Copyright © 2011-2022 走看看