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); } }
/// <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; } }