在上篇給大家介紹了基于MVC5和Bootstrap的jQuery TreeView樹形控件(一)之數據支持json字符串、list集合。
這種方式其實還是利用list集合的方式傳給前臺,只不過在前臺做了一些小小的變化,而控制器代碼也進行了部分的優化,值的一提的是:沒用的ajax前后臺交互舍棄掉了。
控制器代碼如下:
//實例化公共靜態字典表集合public static List<TC_DictionaryInfo> DInfo = new List<TC_DictionaryInfo>();/// <summary>/// TreeView視圖/// </summary>/// <returns></returns>public ActionResult May(string TypeCode){ViewBag.TypeCode = TypeCode;List<TC_DictionaryInfo> DInfo = dbll.GetModelList("TypeCode=" + TypeCode);List<NodeModel> list = GetChildNodes(0, new NodeModel() { }, DInfo).nodes;ViewBag.data = list;}///<summary>/// GetChildNodes方法,此方法使用遞歸/// </summary>/// <param name="parentId"></param>/// <returns></returns>public NodeModel GetChildNodes(int parentId, NodeModel childnodestr, List<TC_DictionaryInfo> DInfo){List<TC_DictionaryInfo> DictionaryList = DInfo.Where(e => Convert.ToInt32(e.ParentId) == parentId).ToList();for (int i = 0; i < DictionaryList.Count; i++){NodeModel NewNode = new NodeModel();NewNode.DicId = DictionaryList[i].DicId;NewNode.text = DictionaryList[i].DICName;NewNode.ParentId = DictionaryList[i].ParentId;childnodestr.nodes.Add(NewNode);GetChildNodes(NewNode.DicId, NewNode, DInfo);}return childnodestr;}
PS:不再是三個方法而簡化為兩個方法(幾乎沒什么變動)。
前臺代碼如下:
var data='@JsonConvert.SerializeObject( ViewBag.data)'.replace(/"/g,'"');$(function() {$('#treeview4').treeview({color: "#428bca",data: data,onNodeSelected: function(event, data) {alert(data);}});
PS:這里用到了.NET 下開源的json格式序列號和反序列化的類庫
https://www.ibm.com/developerworks/cn/web/wa-lo-json/ ,
下面介紹json序列化和反序列化的兩個重要方法:
JsonConvert.SerializeObject(object value)序列化,
它有個重載方法JsonConvert.SerializeObject(object value, params JsonConverter[] converters)。
JsonConvert.DeserializeObject(string value, Type type),反序列化,
它有個重載方法JsonConvert.DeserializeObject(string value, Type type, params JsonConverter[] converters)
這兩個方法可以實現基本的序列化和反序列化要求。
js中的replace的作用是將特定的符號替換為自己需要的符號。
而這里replace(///g,'"')的作用是把所有的 / 都替換為“(因為頁面需要的是json字符串)。
這樣的話 我們的頁面就可以讀取數據進行顯示了。BZ還是感覺這種方式更好一點。
以上所述是小編給大家介紹的基于MVC5和Bootstrap的jQuery TreeView樹形控件(二)之數據支持json字符串、list集合,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對武林網網站的支持!
|
新聞熱點
疑難解答