internal FlexLabelItem (ParameterTemplate parentRow, ActivityParameter row) : base(row) { if (parentRow.intScheme.Equals((int)FFParameterScheme.Left) || parentRow.intScheme.Equals((int)FFParameterScheme.Right)) { Width = parentRow.intWidth - parentRow.intLabelSize; Height = parentRow.intHeight; } else { Width = parentRow.intWidth; Height = parentRow.intHeight - parentRow.intLabelSize; } Top = parentRow.intTop; Left = parentRow.intLeft; switch (parentRow.intScheme) { case (int)FFParameterScheme.Left: Left += parentRow.intLabelSize; break; case (int)FFParameterScheme.Right: Left -= parentRow.intLabelSize; break; case (int)FFParameterScheme.Top: Top += parentRow.intLabelSize; break; case (int)FFParameterScheme.Bottom: Top -= parentRow.intLabelSize; break; } FontSize = ReportSettings.DefaultFontSize; if (row == null) { Text = string.Empty; } else if (ParameterControlTypeHelper.ConvertToParameterControlType(parentRow.idfsEditor).Equals(FFParameterEditors.CheckBox)) { long val = (bool)row.varValue ? 10100001 : 10100002; //Yes/No using (var manager = DbManagerFactory.Factory.Create(ModelUserContext.Instance)) { Text = BaseReference.Accessor.Instance(null).rftYesNoValue_SelectList(manager).FirstOrDefault(c => c.idfsBaseReference == val, c => String.Empty); } } else if (!string.IsNullOrEmpty(row.strNameValue)) { Text = row.strNameValue; } else if (row.varValue != null) { var str = row.varValue.ToString(); if (parentRow.idfsParameterType.Equals((long)FFParameterTypes.Date)) { var itms = str.Split(new[] { " " }, StringSplitOptions.RemoveEmptyEntries); if (itms.Length > 0) { Text = itms[0]; } } else { Text = str; } } }
/// <summary> /// /// </summary> /// <param name="activityParameters"></param> /// <param name="template"></param> /// <param name="idfObservation"></param> /// <param name="idfsParameter"></param> /// <param name="numRow"></param> /// <param name="value"></param> /// <param name="idfRow"></param> /// <param name="strNameValue"></param> /// <param name="deletedParameters"></param> public static ActivityParameter SetActivityParameterValue(this EditableList <ActivityParameter> activityParameters, Template template, long idfObservation, long idfsParameter, long idfRow, int numRow, object value, string strNameValue, List <ParametersDeletedFromTemplate> deletedParameters = null) { if (template == null) { return(null); } //определяем реальный тип по типу параметра var parameterTemplate = template.ParameterTemplatesLookup.FirstOrDefault(c => c.idfsParameter == idfsParameter); var deletedParameter = deletedParameters != null?deletedParameters.FirstOrDefault(c => c.idfsParameter == idfsParameter) : null; //динамических параметров в табличных секциях не бывает var isParameterInSectionTable = deletedParameter == null && IsParameterInSectionTable(parameterTemplate, template); var ap = GetActivityParameter(activityParameters, isParameterInSectionTable, idfObservation, idfsParameter, idfRow); object val; if (parameterTemplate != null) { val = ConvertToRealDataType(parameterTemplate.ParameterType, parameterTemplate.Editor, value); } else if (deletedParameter != null) { val = ConvertToRealDataType(ParameterTypeHelper.ConvertToParameterType(deletedParameter.idfsParameterType), ParameterControlTypeHelper.ConvertToParameterControlType(deletedParameter.idfsEditor), value); } else { val = ConvertToRealDataType(value); } var isInitValue = value == DBNull.Value; long idval; //проверяем, не пустое ли это значение в выпадающем списке (верхняя пустышка) if ((val != null) && Int64.TryParse(val.ToString(), out idval) && (idval == -1000) && (strNameValue.Length == 0)) { val = null; } //для checkbox значение = false означает null bool valbool; if ((val != null) && Boolean.TryParse(val.ToString(), out valbool) && !valbool) { val = null; } if (!isInitValue && Utils.IsEmpty(val)) { if ((ap != null) && (ap.varValue != null)) { //если до изменения было какое-то значение, а теперь его стёрли, то удаляем значение var str = ap.varValue.ToString(); //0 -- нужно хранить. Кроме того, 0 -- это ничего не выбрано в вып. списке if ( (str.Length > 0) && (str != "0")) { ap.varValue = null; ap.HasRealChanges = true; //TODO убрать, когда ActivityParameter.HasChanges начнёт меняться от varValue ap.IncreaseFakeField(); } } } else { if (ap != null) { if (ap.varValue != null) { if (!ap.varValue.Equals(val)) { ap.varValue = val; ap.HasRealChanges = true; //TODO убрать, когда ActivityParameter.HasChanges начнёт меняться от varValue ap.IncreaseFakeField(); } } else { ap.varValue = val; ap.HasRealChanges = true; //TODO убрать, когда ActivityParameter.HasChanges начнёт меняться от varValue ap.IncreaseFakeField(); } } else { using (var manager = DbManagerFactory.Factory.Create(ModelUserContext.Instance)) { ap = ActivityParameter.Accessor.Instance(null) .Create(manager, template , idfsParameter , idfObservation , template.idfsFormTemplate); if (idfRow != FFPresenterModel.UnassignedValue) { ap.idfRow = idfRow; } if (numRow != FFPresenterModel.UnassignedValue) { ap.intNumRow = numRow; } ap.varValue = val; //TODO может быть убрать это присвоение ap.strNameValue = strNameValue; activityParameters.Add(ap); if (isInitValue) { ap.AcceptChanges(); //activityParameters.AcceptChanges(); } else { ap.HasRealChanges = true; } } } //если не удалось присвоить, то пробуем взять из параметра if (val != null) { var selectList = parameterTemplate != null ? parameterTemplate.SelectListLookup : deletedParameter != null ? deletedParameter.SelectListLookup : null; if (selectList != null) { long id; if (Int64.TryParse(val.ToString(), out id)) { var sl = selectList.FirstOrDefault(s => s.idfsValue == id); if (sl != null) { ap.strNameValue = sl.strValueCaption; } } } } } //уточняем, если это динамический параметр if ((deletedParameter != null) && (ap != null)) { ap.IsDynamicParameter = true; } return(ap); }