树形结构,大家在资源管理器中都是常使用的。项目中单位的数据存储结构是树形的,上级单位包含很多下级单位,下级单位也同样包含多个下下级单位,当让用户选择时以树形页面呈现显然更方便。
使用了zTree-JQuery树插件。关于zTree树的学习只要在百度中输入zTree,它的一系列资料都出现了。使用zTree的核心就是会使用zTree(setting,[zTreeNodes])这个函数,它的返回值就是zTreePlugin. 这个函数接受一个 JSON 格式的数据对象 setting 和 一个 JSON 格式的数据对象 zTreeNodes,从而建立 Tree。我们实现树形就是通过后台查询出数据库中的单位数据,然后转为Json格式作为参数传入该函数,返回zTreePlugin显示到页面相应的区域中。当然zTree很多属性可以做出不同风格的Tree,有兴趣的可以去官网学习。zTree学习网
页面代码:
@*引入zTree的js文件,可下载得到*@ <link href="../../Content/zTreeStyle/zTreeStyle.css" rel="stylesheet" type="text/css" /> <script src="../../Scripts/zTree/jquery.ztree.core-3.5.js" type="text/javascript"></script> <script src="../../Scripts/zTree/jquery.ztree.excheck-3.5.js" type="text/javascript"></script> @*引入实现本功能的js文件*@ <script src="../../Scripts/zTree/unitTree.js" type="text/javascript"></script>
<h2>Tree</h2> <div id="dlg" class="easyui-dialog" title="Toolbar and Buttons" style="width: 400px; height: 200px; padding: 10px" data-options=" iconCls: 'icon-save', buttons: [{ text:'Ok', iconCls:'icon-ok', handler:dialog_OK },{ text:'Cancel', handler:dialog_Cancel }] "> <table border="0" height="100px" align="left"> <tr> <td width="60px" align="left" valign="top" style="border-right: #999999 0px dashed"> <ul <span style="color:#ffffff;background-color: rgb(255, 0, 0);">id="tree"</span> class="ztree" style="width: 160px; overflow: auto;"> </ul> </td> <td > <select id="comboPeople" multiple="multiple" style="width:100px;height:100px"> </select> </td> </tr> </table> </div>
UnitTree.js文件:
var tree = { /** * 所有的初始化的操作 */ pFunction: { zTree: '', setting: { callback: { onClick: zTreeOnClick }, check: { enable: true, chkboxType: { "Y": "", "N": "" } }, data: { key: { name: "UnitName" }, simpleData: { enable: true, idKey:"UnitID", pIdKey: "pid", rootPId:"0" } } }, //加载单位 loadTree: function () { $.post("/Test/getAllUnit", null, function (unitInfo) { $.fn.zTree.init(<span style="background-color: rgb(255, 102, 102);"><span style="color:#ffffff;">$("#tree")</span></span>, tree.pFunction.setting, unitInfo); }); } } }; $().ready(function () { tree.pFunction.loadTree(); //tree.init.initEvent(); });Controller里面的代码:
public ActionResult getAllUnit() { UserEntity e = CacheHelper.Get("User") as UserEntity; Collections.AnJianLuRu.UnitEntityCollection units = unitmanager.LoadAll(); for (int enNum = 0; enNum < units.Count; ++enNum) { units[enNum].UserEntities = null; //caseHandleCollection[enNum].CaseInputInfoEntity= null; } var ltUnit = units.Select ( p => new { p.ID, p.FlowID, p.Level, p.pid, p.UnitID, p.UnitName, p.UserEntities, Timestamp = p.Timestamp.ToString("yyyy-mm-dd"), } ).ToList(); var unitInfo = this.JsonFormat( //将查询到的数据转为Json格式 ltUnit ); return unitInfo; }代码中两次地方以红色标出,说明了生成的树显示在view中的响应位置。
很多东西我们都要学会站在巨人的肩膀上。这是一种思想应该变为一种潜意识。开始时听说要加一棵树上去,我自己就想着这得多难啊。殊不知别人已经帮你做好了,去学去用就好了。