/// <summary> /// 加载自由标签至缓存中 /// </summary> private void Load() { DataTable dt; Hashtable hsFreeLabelConfig; FreeLabelConfig freeLabelConfig; Regex regLabelName; Match match; regLabelName = new Regex(@"HQB_L\d+", RegexOptions.Singleline | RegexOptions.IgnoreCase); freeLabelConfig = new FreeLabelConfig(); hsFreeLabelConfig = new Hashtable(); dt = dal.GetFreeLabelList(); if (dt != null && dt.Rows.Count > 0) { foreach (DataRow dr in dt.Rows) { match = regLabelName.Match(dr["LableName"].ToString().Trim()); if (match.Success) { freeLabelConfig.SQL = dr["LabelSQL"].ToString(); freeLabelConfig.Content = dr["LableContent"].ToString().Replace("\r\n", "").Replace("\t", ""); freeLabelConfig.PageSize = Common.Utils.ParseInt(dr["PageSize"], 0); hsFreeLabelConfig.Add(match.Value, freeLabelConfig); } } } HttpContext.Current.Cache[freeLabelCacheName] = hsFreeLabelConfig; }
/// <summary> /// 获取标签SQL配置 /// </summary> /// <param name="labelName">自由标签代码</param> /// <returns></returns> public FreeLabelConfig GetFreeLabelConfig(string labelName) { FreeLabelConfig freeLabelConfig; if (this.LabelList[labelName] != null) { freeLabelConfig = (FreeLabelConfig)this.LabelList[labelName]; } else { freeLabelConfig = new FreeLabelConfig(); } return(freeLabelConfig); }
/// <summary> /// 解析 /// </summary> /// <param name="freeLabel">标签内容</param> /// <param name="currentPage">当前页(仅用于分页)</param> /// <param name="pageSize">页面大小(仅用于分页)</param> /// <returns></returns> public string Parse(FreeLabel freeLabel, int currentPage, int pageSize) { string parseResult; // 标签解析结果 FreeLabelConfig labelConfig; // 自由标签参数 bool isException; // 是否出现异常 DataTable dtDataSource; // 标签数据源 LoopLabelParseParam labelParseParam; // 标签经解析后的参数 string selSQL; // 标签数据源查询语句 labelConfig = new FreeLabelConfig(); isException = false; parseResult = string.Empty; if (string.IsNullOrEmpty(this.NodeCode)) { DataRow[] drMenu; drMenu = this.MenuList.Select("NodeCode='" + freeLabel.NodeCode + "'"); if (drMenu != null && drMenu.Length > 0) { this.CSaveType = GetContentPageSaveType(drMenu[0]["ContentPageHtmlRule"].ToString()); } } if (LabelList != null && LabelList.Contains(freeLabel.Name)) { try { labelConfig = (FreeLabelConfig)LabelList[freeLabel.Name]; } catch { isException = true; } } else { isException = true; } if (!isException && !string.IsNullOrEmpty(labelConfig.SQL) && !string.IsNullOrEmpty(labelConfig.Content)) { selSQL = labelConfig.SQL; selSQL = selSQL.Replace("{$NodeCode}", NodeCode); selSQL = selSQL.Replace("{$SiteID}", SiteID.ToString()); if (pageSize > 0) // 分页 { selSQL = Regex.Replace(selSQL, @"top\s*\d+", " ", RegexOptions.Singleline | RegexOptions.IgnoreCase); dtDataSource = dal.GetFreeLabelSplitDataSource(selSQL, currentPage, pageSize, null); } else { dtDataSource = dal.GetFreeLabelDataSource(selSQL); } labelParseParam = GetLoopLabelParam(labelConfig.Content, this.itemContentTag); parseResult = DataSourceBind(dtDataSource, labelParseParam, freeLabel); parseResult = labelParseParam.LabelTemplate.Replace(itemContentTag, parseResult); } return(parseResult); }