public CatalogHierarchyItem(Catalog catalog, CatalogHierarchyItem parent) { Content = catalog; Parent = parent; Childs = new List<CatalogHierarchyItem>(); }
private void ParseCatalogHierarchy() { List<Catalog> catalogs = GetCatalogs(); //添加额外分类 Catalog exCatalog = new Catalog(); exCatalog.Code = ""; exCatalog.Name = "中国成果"; catalogs.Sort((x, y) => x.Code.Length - y.Code.Length); rootCatalog = new CatalogHierarchyItem(exCatalog, null); catalogMap.Add(rootCatalog.Content.Code, rootCatalog); List<int> lengthHistory = new List<int>(); lengthHistory.Add(catalogs[0].Code.Length); for (int i = 0; i < catalogs.Count; ++i) { Catalog catalog = catalogs[i]; //添加2位的一级编码 if (catalog.Code.Length == 1) { CatalogHierarchyItem chItem = new CatalogHierarchyItem(catalog, rootCatalog); rootCatalog.Childs.Add(chItem); catalogMap.Add(catalog.Code, chItem); } else //添加后续分类编码 { for (int j = lengthHistory.Count - 1; j >= 0; --j) { int length = lengthHistory[j]; CatalogHierarchyItem parent; if (catalogMap.TryGetValue(catalog.Code.Substring(0, length), out parent)) { CatalogHierarchyItem item = new CatalogHierarchyItem(catalog, parent); parent.Childs.Add(item); catalogMap.Add(catalog.Code, item); break; } } } if (catalog.Code.Length > lengthHistory.Last()) lengthHistory.Add(catalog.Code.Length); } }
private void ReloadData() { ParseCatalogHierarchy(); currentCatalog = ParseQuery("catalog", s => catalogMap[s], rootCatalog); }
private void ParseCatalogHierarchy() { List<Catalog> catalogs = GetCatalogs(); if (null == catalogs || catalogs.Count == 0) { Response.Redirect(StateGrid.GlobalVariables.GlobalResource.ERROR_PAGE+"?message=系统出错,请联系管理员"); return; } catalogs.Sort((x, y) => x.Code.Length - y.Code.Length); rootCatalog = new CatalogHierarchyItem(catalogs[0], null); catalogMap.Add(rootCatalog.Content.Code, rootCatalog); List<int> lengthHistory = new List<int>(); lengthHistory.Add(catalogs[0].Code.Length); for (int i = 1; i < catalogs.Count; ++i) { Catalog catalog = catalogs[i]; for (int j = lengthHistory.Count - 1; j >= 0; --j) { int length = lengthHistory[j]; CatalogHierarchyItem parent; if (catalogMap.TryGetValue(catalog.Code.Substring(0, length), out parent)) { CatalogHierarchyItem item = new CatalogHierarchyItem(catalog, parent); parent.Childs.Add(item); catalogMap.Add(catalog.Code, item); break; } } if (catalog.Code.Length > lengthHistory.Last()) lengthHistory.Add(catalog.Code.Length); } foreach (CatalogHierarchyItem item in catalogMap.Values) { item.Childs.Sort((child1, child2) => child1.Content.Code.CompareTo(child2.Content.Code)); } }