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