基於Bootstrap的JQuery TreeView樹形控件,數據支持json字符串、list集合(MVC5)<二>


上篇博客給大家介紹了基於Bootstrap的JQuery TreeView樹形控件,數據支持json字符串、list集合(MVC5)<一>,

其中的兩種方式都顯得有些冗余。接着上篇博客繼續說:

這種方式其實還是利用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;
        }
View Code

PS:不再是三個方法而簡化為兩個方法(幾乎沒什么變動)。

前台代碼如下:

 var data='@JsonConvert.SerializeObject( ViewBag.data)'.replace(/&quot;/g,'"');
        $(function() {

            $('#treeview4').treeview({
                color: "#428bca",
                data: data,
                onNodeSelected: function(event, data) {
                    alert(data);
                }
            });
View Code

PS:這里用到了.NET 下開源的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還是感覺這種方式更好一點。
感謝張老師、方總的指點!
歡迎各位小菜和我一起成長,也歡迎各位大神對本文不足之處提出建議。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM