protected void btnOr_Click(object sender, EventArgs e)
        {
            try
            {
                if (this.gcList.SelectedValues.Count < 2)
                {
                    this.AjaxAlert("必须选择两个或以上的根条件!");
                    return;
                }

                var model = new SysReportFixedCondition();
                model.ConditionId = this.DataHelper.GetNextIdentity_Int();
                model.ReportId    = this.__Id;
                model.FilterType  = (int)FilterTypeEnum.OR;
                int           i  = 0;
                StringBuilder sb = new StringBuilder();


                foreach (var _ConditionId in this.gcList.SelectedValues)
                {
                    var _ChildModel = this.DataHelper.FindById <SysReportFixedCondition>(_ConditionId.ToInt());
                    _ChildModel.ParentId = model.ConditionId;
                    this.DataHelper.UpdatePartial(_ChildModel, p => new { p.ParentId });

                    if (i > 0)
                    {
                        sb.Append(" Or ");
                    }
                    sb.Append(_ChildModel.DisPlayText);
                    i++;
                }
                model.DisPlayText = string.Format("({0})", sb.ToString());
                this.DataHelper.Insert(model);

                InitFixedCondition();
            }
            catch (Exception ex)
            {
                this.AjaxAlert(ex);
            }
        }
        protected void btnAdd_Click(object sender, EventArgs e)
        {
            try
            {
                if (string.IsNullOrEmpty(this.lbConditionField.Text))
                {
                    this.AjaxAlertAndEnableButton("必须先选择一个字段!");
                    return;
                }
                var model = new SysReportFixedCondition();
                model.ConditionId = this.DataHelper.GetNextIdentity_Int();
                model.ReportId    = this.__Id;
                var _FieldAndRelationId = this.lbConditionField.Attributes["_FieldAndRelationId"].Split('-');
                model.FieldId     = _FieldAndRelationId[0].ToLong();
                model.RelationId  = _FieldAndRelationId[1].ToLongNullable();
                model.CompareType = this.ccCompareType.SelectedValue.ToIntNullable();
                model.FilterType  = (int)FilterTypeEnum.CONDITION;
                var _Field = this.EntityCache.FindById <SysField>(this.lbConditionField.Attributes["_FieldAndRelationId"].Split('-')[0].ToLong());
                if (_Field.DataType == (int)DataTypeEnum.penum)
                {
                    model.ConditionValue = this.tcConditionValue.SelectedValue;
                }
                else
                {
                    model.ConditionValue = this.tcConditionValue.SelectedText;
                }
                model.FieldName   = _Field.FieldName;
                model.DisPlayText = string.Format("{0}{1}", this.lbConditionField.Text, string.Format(EnumHelper.GetDescription(typeof(ReportCompareTypeEnum), model.CompareType.Value), this.tcConditionValue.SelectedText));

                this.DataHelper.Insert(model);
                InitFixedCondition();
                this.AjaxAlertAndEnableButton("新增成功!");
            }
            catch (Exception ex)
            {
                this.AjaxAlertAndEnableButton(ex);
            }
        }
Exemplo n.º 3
0
        /// <summary>
        /// 构造固定条件
        /// </summary>
        /// <param name="_ReportFixedCondition"></param>
        /// <param name="sb"></param>
        private void ReportFixedConditionFilter(SysReportFixedCondition _ReportFixedCondition, StringBuilder sb)
        {
            if (_ReportFixedCondition == null)
            {
                return;
            }
            var ChildConditions = this._ReportFixedConditions.Where(p => p.ParentId == _ReportFixedCondition.ConditionId).ToList();

            switch (_ReportFixedCondition.FilterType)
            {
            case (int)FilterTypeEnum.AND:
                sb.Append("(");
                for (int i = 0; i < ChildConditions.Count; i++)
                {
                    ReportFixedConditionFilter(ChildConditions[i], sb);
                    if (i != ChildConditions.Count - 1)
                    {
                        sb.Append(" and ");
                    }
                }
                sb.Append(")");
                break;

            case (int)FilterTypeEnum.OR:
                sb.Append("(");
                for (int i = 0; i < ChildConditions.Count; i++)
                {
                    ReportFixedConditionFilter(ChildConditions[i], sb);
                    if (i != ChildConditions.Count - 1)
                    {
                        sb.Append(" or ");
                    }
                }
                sb.Append(")");
                break;

            case (int)FilterTypeEnum.CONDITION:
                if (_ReportFixedCondition.CompareType == (int)ReportCompareTypeEnum.CurrentUser)
                {
                    sb.AppendFormat(" {0}.{1} = @CurrentUser ", GetTableAliase(_ReportFixedCondition.RelationId), _ReportFixedCondition.FieldName);
                }
                else if (_ReportFixedCondition.CompareType == (int)ReportCompareTypeEnum.Today)
                {
                    sb.AppendFormat(" CONVERT(varchar(10),{0}.{1},120) = CONVERT(varchar(10),GetDate(),120) ", GetTableAliase(_ReportFixedCondition.RelationId), _ReportFixedCondition.FieldName);
                }
                else if (_ReportFixedCondition.CompareType == (int)ReportCompareTypeEnum.ThisMonth)
                {
                    sb.AppendFormat(" CONVERT(varchar(4),{0}.{1},120) = CONVERT(varchar(4),GetDate(),120) ", GetTableAliase(_ReportFixedCondition.RelationId), _ReportFixedCondition.FieldName);
                }
                else if (_ReportFixedCondition.CompareType == (int)ReportCompareTypeEnum.ThisYear)
                {
                    sb.AppendFormat(" CONVERT(varchar(7),{0}.{1},120) = CONVERT(varchar(7),GetDate(),120) ", GetTableAliase(_ReportFixedCondition.RelationId), _ReportFixedCondition.FieldName);
                }
                else
                {
                    var _ConditionValue = _ReportFixedCondition.ConditionValue;
                    //判断如果日期的话加'',字符串都是like比较,所以不用加
                    var _Field    = _entityCache.FindById <SysField>(_ReportFixedCondition.FieldId);
                    var _DataType = (DataTypeEnum)_Field.DataType;
                    if (_DataType == DataTypeEnum.pdatetime || _DataType == DataTypeEnum.pstring || _DataType == DataTypeEnum.ptext)
                    {
                        _ConditionValue = string.Format("'{0}'", _ConditionValue);
                    }
                    sb.AppendFormat(" {0}.{1} {2} ", GetTableAliase(_ReportFixedCondition.RelationId), _ReportFixedCondition.FieldName, string.Format(EnumHelper.GetDescription(typeof(ReportCompareTypeEnum), _ReportFixedCondition.CompareType.Value), _ConditionValue));
                }
                break;
            }
        }