Exemple #1
0
        /// <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;
        }
Exemple #2
0
        /// <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);
        }
Exemple #3
0
        /// <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);
        }