private static void AddOptionTree(List <IXForum> list, Int32 parentid, bool cateUnselectable, StringBuilder sb) { //DataRow[] array = list.Select("parentid=" + parentid); //DataRow[] array2 = array; //for (int i = 0; i < array2.Length; i++) foreach (var forum in list) { if (forum.ParentID != parentid) { continue; } //DataRow dataRow = array2[i]; if (cateUnselectable && forum.Layer == 0) { sb.AppendFormat("<optgroup label=\"--{0}\">", forum.Name.Trim()); sb.Append(Utils.GetSpacesString(forum.Layer)); sb.Append(forum.Name.Trim()); } else { sb.AppendFormat("<option value=\"{0}\">", forum.ID); sb.Append(Utils.GetSpacesString(forum.Layer)); sb.Append(forum.Name.Trim()); sb.Append("</option>"); } Caches.AddOptionTree(list, forum.ID, cateUnselectable, sb); if (cateUnselectable && forum.Layer == 0) { sb.Append("</optgroup>"); } } }
//private static Regex r = new Regex("\\{(\\d+)\\}", Utils.GetRegexCompiledOptions()); public static string GetForumListBoxOptionsCache(bool cateUnselectable) { var cacheService = XCache.Current; string text = cacheService.RetrieveObject(CacheKeys.FORUM_UI_FORUM_LIST_BOX_OPTIONS) as string; if (text.IsNullOrEmpty()) { StringBuilder stringBuilder = new StringBuilder(); //Caches.AddOptionTree(BBX.Data.Forums.GetVisibleForumList(), "0", cateUnselectable, stringBuilder); Caches.AddOptionTree(XForum.GetVisibleForumList(), 0, cateUnselectable, stringBuilder); text = stringBuilder.ToString(); XCache.Add(CacheKeys.FORUM_UI_FORUM_LIST_BOX_OPTIONS, text); } return(text); }