예제 #1
0
        /// <summary>
        /// Gets the cell template.
        /// </summary>
        /// <param name="column">The column.</param>
        /// <param name="converterInfo">The converter information.</param>
        /// <param name="gridType">Type of the grid.</param>
        /// <returns>DataTemplate.</returns>
        public static DataTemplate GetCellTemplate(IColumnItem column, ConverterInfo converterInfo, GridType gridType)
        {
            if (column == null)
                return null;

            var highlightBehavior = GetHightlightBehavior(column.ColumnName, gridType);

            var prop = column.Property;
            var stringFormat = GetStringFormat(prop);
            var backcolorBinding = GetBackgroundColor(prop);

            var converter = converterInfo != null ? converterInfo.ConverterString : string.Empty;

            var binding =
                string.Format(CultureInfo.InvariantCulture, GetPropertyBinding(gridType),
                              column.FullName,
                              string.IsNullOrWhiteSpace(column.Prefix) ? string.Empty : string.Format(CultureInfo.InvariantCulture, "{0}.", column.Prefix),
                              string.IsNullOrWhiteSpace(converter) ? string.Empty : string.Format(CultureInfo.InvariantCulture, ", {0}", converter),
                              string.IsNullOrWhiteSpace(stringFormat) ? string.Empty : string.Format(CultureInfo.InvariantCulture, ", {0}", stringFormat));

            var behavior = string.Format(CultureInfo.InvariantCulture, highlightBehavior, binding);

            var templateText = BuildDataTemplate(gridType, behavior, backcolorBinding);
            
            var itemTemplate = XamlReader.Load(templateText);
            return (DataTemplate)itemTemplate;
        }
예제 #2
0
        /// <summary>
        /// Handle the case in which the user has entered a character into any of the filter columns -
        /// update the corresponding filter column string in the viewmodel.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        public void HandleRefreshOnInputKeyInFilter(object sender, KeyEventArgs e)
        {
            var tb = sender as TextBox;

            if (tb == null)
            {
                return;
            }

            IColumnsViewModel colVM = Columns;

            if (colVM == null)
            {
                return;
            }

            IColumnItem col = colVM.DataGridColumns.FirstOrDefault(f => f.FilterControlName == tb.Name);

            if (col == null)
            {
                return;
            }

            col.SetColumnFilterValue(tb.Text);
        }
        public SpreadsheetCellDataFieldViewModel(Type viewModelType, PropertyInfo propertyInfo, IEditableProxy model, DetailsViewModel parentViewModel, IColumnItem column)
        {            
            _propertyInfo = propertyInfo;            
            _parentModel = model;
            if (_parentModel != null)
            {                
                var parentModelBO = _parentModel as BusinessBase;
                if (parentModelBO != null)
                {
                    var weakListener = new WeakEventListener<SpreadsheetCellDataFieldViewModel, BusinessBase, PropertyChangedEventArgs>(this, parentModelBO);

                    parentModelBO.PropertyChanged += weakListener.OnEvent;
                    weakListener.OnEventAction += OnParentModelPropertyChanged;
                    weakListener.OnDetachAction += Static;
                }

                _allProperties = _parentModel.GetAllPropertiesForInstance();
                var root = _parentModel.GetModel();
                if (root != null)
                    _allMasterProperties = root.GetAllPropertiesForInstance();                
            }

            _parentDetailsVM = parentViewModel;
            _fieldViewModelType = viewModelType;
            _column = column;
        }
예제 #4
0
        public GridViewDataColumn CreateDataColumn(IColumnItem column, ConverterInfo converterInfo)
        {
            if (column == null) throw new ArgumentNullException("column");
            if (converterInfo == null) throw new ArgumentNullException("converterInfo");
            
            if (column.IsSelectColumn)
                return null;

            if (column.IsBase && column.ColumnName == Constants.IdColumnName && column.Property.PropertyType == typeof(int))
            {
                return null;
            }

            if (column.IsBase && column.ColumnName == Constants.VersionDate)
            {
                return null;
            }

            if (column.IsBase && column.ColumnName == Constants.VersionNumber)
            {
                return null;
            }

            if (column.IsBase && Constants.DerivedProcessDisplayNameColumnName.Equals(column.ColumnName))
            {
                return null;
            }

            GridType gridType;
            if (!Enum.TryParse((string)_grid.Tag, out gridType))
            {
                gridType = GridType.None;
            }

            var bindingPath = column.FullName;

            return new GridViewDataColumn
            {
                Header = column.Header,
                UniqueName = column.FullName,
                DataMemberBinding = new Binding(bindingPath)
                {
                    Converter = converterInfo.ConverterObject,
                    ConverterParameter = converterInfo.ConverterParameter
                },
                CellTemplate = CellTemplateCreator.GetCellTemplate(column, converterInfo, gridType),
                GroupFooterCellStyle = (Style)_dictionary["GroupFooterCellStyle"],
                GroupHeaderFormatString = GetGroupFormatString(column, converterInfo),
                FooterCellStyle = (Style)_dictionary["FooterCellStyle"],
                DataType = column.Property.PropertyType,
                IsGroupable = true,
                Width =
                    Math.Abs(column.Width) < double.Epsilon
                        ? new GridViewLength(1, GridViewLengthUnitType.Auto)
                        : column.Width,
                HeaderCellStyle = _dictionary != null ? (Style)_dictionary["GridViewHeaderCellStyle"] : new Style()
            };
        }
예제 #5
0
 /// <summary>
 /// 新增課程的延伸資料行
 /// </summary>
 public static void AddItem(IColumnItem item)
 {
     if (_Manager == null)
     {
         if (catchItems == null)
         {
             catchItems = new List <IColumnItem>();
         }
         catchItems.Add(item);
     }
     else
     {
         _Manager.Add(item);
     }
 }
예제 #6
0
        HelpIndexPage(IDataSheetResulHolder dataSheet,
                      Dictionary <ITranslationEntity, List <ITranslationEntity> > translates)
        {
            Dictionary <ITranslationEntity, IParsedResultEntity> sectionsDictionary =
                new Dictionary <ITranslationEntity, IParsedResultEntity>();

            foreach (var keyValue in translates)
            {
                IItemEntity         temItemEntities = new ItemEntity();
                IParsedResultEntity parsedResult    = new ParsedResultEntity();

                parsedResult.CategoryTranslate = keyValue.Value;
                List <ITranslationItemEntity> translationItemEntitys =
                    new List <ITranslationItemEntity>();

                foreach (var sheet in dataSheet.DataSheets)
                {
                    foreach (var row in sheet.RowItems)
                    {
                        IColumnItem columnItem =
                            row.ColumnItems.FirstOrDefault(p => p.ColumnType == ColumnType.Section);
                        ITranslationEntity tempEntity = (ITranslationEntity)columnItem?.BaseEntity;

                        if (tempEntity?.Value != null && keyValue.Key.Value != null &&
                            tempEntity.Value.Equals(keyValue.Key.Value))
                        {
                            ITranslationItemEntity teTranslationItemEntity =
                                new TranslationItemEntity();
                            List <ITranslationEntity> translationEntities =
                                new List <ITranslationEntity>();

                            foreach (var column in row.ColumnItems)
                            {
                                switch (column.ColumnType)
                                {
                                case ColumnType.Index:
                                    teTranslationItemEntity.Index = column.BaseEntity.Value;
                                    break;

                                case ColumnType.Page:
                                    teTranslationItemEntity.Page = column.BaseEntity.Value;
                                    break;

                                case ColumnType.Sex:
                                    teTranslationItemEntity.SexType = column.BaseEntity.Value;
                                    break;

                                case ColumnType.Picture:
                                    teTranslationItemEntity.ExcelColor = (IExcelColor)column.BaseEntity;
                                    break;

                                case ColumnType.Language:
                                    translationEntities.Add((ITranslationEntity)column.BaseEntity);
                                    break;

                                case ColumnType.WorldSection:
                                    translationEntities.Add((ITranslationEntity)column.BaseEntity);
                                    break;
                                }
                            }

                            teTranslationItemEntity.WordTranslations = translationEntities;
                            translationItemEntitys.Add(teTranslationItemEntity);
                        }
                    }
                }

                if (translationItemEntitys.Any())
                {
                    temItemEntities.MainSection = new RootTranslationItemEntity();
                    temItemEntities.MainSection.WordTranslation = keyValue.Key;
                    temItemEntities.TranslationItemEntitys      = translationItemEntitys;
                }

                parsedResult.ItemEntity = temItemEntities;
                sectionsDictionary.Add(keyValue.Key, parsedResult);
            }

            return(sectionsDictionary);
        }
예제 #7
0
        public static void CalculateAggregats(bool isClient, GridViewDataControl grid, AggregateCriteria criteria, IColumnItem currentColumn, string result)
        {
            var f = new AggregateFunction<object, object>
                        {
                            Caption = string.Format(CultureInfo.InvariantCulture, "{0}:", AggregateHelper.GetAttribute(criteria.SummaryType).FullName),
                            FunctionName = string.Format(CultureInfo.InvariantCulture, "{0}{1}", criteria.SelectedColumn, criteria.SummaryType)
                        };

            if (isClient)
                f.AggregationExpression = x => x.ClientCalculateAggregates(criteria);
            else
                f.AggregationExpression = x => result;

            if (currentColumn != null)
            {
                if (grid != null)
                {
                    grid.Columns[currentColumn.FullyQualifiedName].AggregateFunctions.Add(f);
                    var ordered = grid.Columns[currentColumn.FullyQualifiedName].AggregateFunctions.OrderBy(x => AggregateHelper.GetAttribute(AggregateHelper.GetTypeByFullName(x.Caption.Replace(":", null))).Order).ToList();
                    grid.Columns[currentColumn.FullyQualifiedName].AggregateFunctions.Clear();
                    grid.Columns[currentColumn.FullyQualifiedName].AggregateFunctions.AddRange(ordered);
                }

                currentColumn.AggregateCriteriaList.Add(criteria);
            }

            if (!isClient)
                if (grid != null)
                    grid.CalculateAggregates();
        }
예제 #8
0
        private static ConverterInfo GetConverterInfo(IColumnItem column)
        {
            var localProperty = column.Property;
            IValueConverter converterObject = null;
            object converterParameter = null;
            var converterString = string.Empty;
            PropertyInfo sourceProperty = null;

            if (ReferenceFieldsHelper.IsReferenceProperty(localProperty))
            {
                // Field type specific attributes should be taken from source.
                var refInfo = ReferenceFieldsHelper.GetCrossRefInfo(localProperty);
                sourceProperty = new ReferenceFieldsHelper().GetSourcePropertyInfo(refInfo.Item1, refInfo.Item2);
            }

            var prop = sourceProperty ?? localProperty;

            if (PropertyIsDateTime(localProperty, column))
            {
                var datetimeFormat = ReferenceFieldsHelper.GetDateTimeFormat(prop);

                if (!string.IsNullOrEmpty(datetimeFormat))
                {
                    converterObject = new DateTimeFormatConverter();
                    converterString = string.Format(CultureInfo.InvariantCulture, "Converter={{StaticResource DateTimeFormatConverter}}, ConverterParameter={0}", datetimeFormat);
                }
            }
            else if (localProperty.PropertyType == typeof(string))
            {
                var approvalAttribute = (ApprovalDefinitionAttribute)(sourceProperty ?? prop).GetCustomAttributes(typeof(ApprovalDefinitionAttribute), false).FirstOrDefault();

                if (approvalAttribute != null)
                {
                    converterObject = new ApprovalStateToDisplayNameConverter();
                    converterString = string.Format(CultureInfo.InvariantCulture, "Converter={{StaticResource ApprovalStateToDisplayNameConverter}}");
                }
            }
            else if (prop.PropertyType == typeof(bool?))
            {
                var checkboxSettings = ReferenceFieldsHelper.GetCheckboxSettings(prop);

                if (checkboxSettings != null && checkboxSettings.IsSwitchToggle)
                {
                    var param = new[]
                                            {
                                                checkboxSettings.UndefinedLabel,
                                                checkboxSettings.FalseLabel,
                                                checkboxSettings.TrueLabel
                                            };

                    converterObject = new CheckboxToCustomValueConverter();
                    converterParameter = string.Join("~", param).Replace(' ', '_').Replace('\'', '^');
                    converterString = string.Format(CultureInfo.InvariantCulture, "Converter={{StaticResource checkboxToCustomValueConverter}}, ConverterParameter={0}", converterParameter);
                }
            }

            var numericAttribute = (NumericAttribute)prop.GetCustomAttributes(typeof(NumericAttribute), false).FirstOrDefault();

            if (numericAttribute != null)
            {
                switch (numericAttribute.NumericType)
                {
                    case NumericTypes.Percentage:
                        converterObject = new NumberToPercentConverter();
                        converterString = string.Format(CultureInfo.InvariantCulture, "Converter={{StaticResource NumberToPercentConverter}}");
                        break;
                }
            }

            return new ConverterInfo(converterObject, converterParameter, converterString);
        }
예제 #9
0
 private static bool PropertyIsDateTime(PropertyInfo prop, IColumnItem column)
 {
     if (prop == null) return false;
     if (prop.PropertyType == typeof (DateTime?)) return true;
     if (column == null) return false;
     return (column.ColumnName == Constants.VersionDate && prop.PropertyType == typeof (DateTime));
 }
예제 #10
0
        private static DataTemplate GetCellTemplate(IColumnItem column, ConverterInfo converterInfo, GridViewDataControl grid)
        {
            string accessDenied = null;

            if ((string)grid.Tag == "SearchGrid")
                accessDenied = string.Format(
                    CultureInfo.InvariantCulture,
                    @"AccessDeniedPropertyList=""{{{{Binding Path={0}, Converter={{{{StaticResource StringToHashSetConverter}}}}}}}}""",
                    Constants.AccessDeniedPropertiesName);

            if ((string)grid.Tag == "SingleCrGrid")
                accessDenied = string.Format(
                    CultureInfo.InvariantCulture,
                    @"SingleCrAccessDeniedList=""{{{{Binding Path={0}, Converter={{{{StaticResource StringToHashSetConverter}}}}}}}}""",
                    Constants.AccessDeniedPropertiesName);

            if ((string)grid.Tag == "MultipleCrGrid")
                accessDenied = string.Format(
                    CultureInfo.InvariantCulture,
                    @"MultiCrAccessDeniedList=""{{{{Binding Path={0}, Converter={{{{StaticResource StringToHashSetConverter}}}}}}}}""",
                    Constants.AccessDeniedPropertiesName);

            var hightlightBehavior = string.Format(CultureInfo.InvariantCulture, 
@"
    <i:Interaction.Behaviors>
        <Behaviors:HightlightBehavior HighlightBrush=""Red""
                                      HighlightFontWeight=""Bold""
                                      HightlightText=""{{{{Binding RelativeSource={{{{RelativeSource AncestorType=UserControl}}}}, Path=DataContext.FilterString}}}}""
                                      {0}
                                      ColumnName=""{1}""
                                      Text=""{{0}}"" />
        <Behaviors:{2} Text=""{{0}}"" />
        </i:Interaction.Behaviors>", accessDenied, column.ColumnName, typeof(HighlightRichTextBehavior).Name);

            var prop = column.Property;
            var stringFormat = string.Empty;

            var numericAttribute =
                (NumericAttribute)
                (from d in prop.GetCustomAttributes(typeof(NumericAttribute), false) select d).FirstOrDefault();

            if (numericAttribute != null)
            {
                switch (numericAttribute.NumericType)
                {
                    case NumericTypes.Numeric:
                        stringFormat = string.Format(CultureInfo.InvariantCulture, "StringFormat=N{0}", numericAttribute.NumberOfDigits);
                        break;

                    case NumericTypes.Currency:
                        stringFormat = string.Format(CultureInfo.InvariantCulture, "StringFormat=C{0}", numericAttribute.NumberOfDigits);
                        break;

                    case NumericTypes.Percentage:
                        stringFormat = string.Format(CultureInfo.InvariantCulture, "StringFormat=P{0}", numericAttribute.NumberOfDigits);
                        break;
                }
            }

            var converter = converterInfo.ConverterString;

            var binding =
                string.Format(CultureInfo.InvariantCulture, "{{Binding {1}{0}{2}{3}}}",
                              prop.Name,
                              string.IsNullOrWhiteSpace(column.Prefix) ? string.Empty : string.Format(CultureInfo.InvariantCulture, "{0}.", column.Prefix),
                              string.IsNullOrWhiteSpace(converter) ? string.Empty : string.Format(CultureInfo.InvariantCulture, ", {0}", converter),
                              string.IsNullOrWhiteSpace(stringFormat) ? string.Empty : string.Format(CultureInfo.InvariantCulture, ", {0}", stringFormat));

            var behavior = string.Format(CultureInfo.InvariantCulture, hightlightBehavior, binding);
            var templateText = string.Format(CultureInfo.InvariantCulture, @"
<DataTemplate
    xmlns=""http://schemas.microsoft.com/client/2007""
    xmlns:i=""http://schemas.microsoft.com/expression/2010/interactivity""
    xmlns:Behaviors=""clr-namespace:Cebos.Common.Behaviors;assembly=Cebos.Veyron.Common.SL"">
     <TextBlock>
        {0}
     </TextBlock>
</DataTemplate>", behavior);
            var itemTemplate = XamlReader.Load(templateText);
            return (DataTemplate)itemTemplate;
        }
예제 #11
0
        private static DataTemplate GetCellTemplateHyperlink(IColumnItem column)
        {
            var templateText = string.Format(
                CultureInfo.InvariantCulture, @"
<DataTemplate
    xmlns=""http://schemas.microsoft.com/client/2007""
    xmlns:i=""http://schemas.microsoft.com/expression/2010/interactivity""
    xmlns:Behaviors=""clr-namespace:Cebos.Common.Behaviors;assembly=Cebos.Veyron.Common.SL"">
    <HyperlinkButton TargetName=""_blank"" NavigateUri=""{{Binding {1}{2}}}"" Content=""View File"">
        <i:Interaction.Behaviors>
            <Behaviors:{3}
                AccessDeniedPropertyList=""{{Binding Path=AccessDeniedProperties, Converter={{StaticResource StringToHashSetConverter}}}}""
                ColumnName=""{0}""
                Content=""{{Binding {0}}}"" />
            </i:Interaction.Behaviors>
     </HyperlinkButton>
</DataTemplate>", column.ColumnName, string.IsNullOrWhiteSpace(column.Prefix) ? string.Empty : string.Format(CultureInfo.InvariantCulture, "{0}.", column.Prefix), column.AdditionalDataPropertyName, typeof(
                    HightlightHyperlinkBehavior).Name);

            return (DataTemplate)XamlReader.Load(templateText);
        }
예제 #12
0
        public static void RemoveColumnFromGrid(GridViewDataControl grid, IColumnItem column)
        {
            if (grid == null)
                return;

            var item = grid.Columns.Cast<GridViewDataColumn>().FirstOrDefault(x => x.UniqueName == column.ColumnName);

            if (item != null)
                grid.Columns.Remove(item);
        }
예제 #13
0
        public static void AddColumnToGrid(GridViewDataControl grid, IColumnItem column)
        {
            if (column == null)
                return;

            string fullName = column.IsBase ? string.Format(CultureInfo.InvariantCulture, "{0}.{1}", column.Prefix, column.ColumnName) : column.ColumnName;
            if (column.Property == null)
            {
                var col = new GridViewDataColumn
                              {
                                  Header = column.Header,
                                  UniqueName = fullName,
                                  DataType = column.DataType,
                                  IsGroupable = column.IsGroupable,
                                  Width = column.Width == 0.0 ? new GridViewLength(1, GridViewLengthUnitType.Auto) : column.Width
                              };

                if (grid != null)
                    grid.Columns.Add(col);

                return;
            }

            var converterInfo = GetConverterInfo(column);
            var dict = Application.Current.Resources.MergedDictionaries.First(x => x.Source == new Uri("/Cebos.Veyron.Common.SL;component/Assets/RadGridViewStyles.xaml", UriKind.RelativeOrAbsolute));
            if (IsImage(column.Property))
            {
                var imageWidth = 96;
                var imageHeight = 96;
                var pictureOptionsAttr = (PictureOptionsAttribute)(from d in column.Property.GetCustomAttributes(typeof(PictureOptionsAttribute), false) select d).FirstOrDefault();
                if (pictureOptionsAttr != null)
                {
                    imageWidth = pictureOptionsAttr.SearchWidth;
                    imageHeight = pictureOptionsAttr.SearchHeight;
                }

                var templateText = string.Format(
                    CultureInfo.InvariantCulture, @"
<DataTemplate
    xmlns=""http://schemas.microsoft.com/client/2007""
    xmlns:i=""http://schemas.microsoft.com/expression/2010/interactivity""
    xmlns:Behaviors=""clr-namespace:Cebos.Common.Behaviors;assembly=Cebos.Veyron.Common.SL"">
    <Image Height=""{0}""
           Width=""{1}""
           Stretch=""Uniform""
           Source=""{{Binding {2}{3}, Converter={{StaticResource imageConverter}}}}"">
        <i:Interaction.Behaviors>
            <Behaviors:{4}
                AccessDeniedPropertyList=""{{Binding Path=AccessDeniedProperties, Converter={{StaticResource {5}}}}}""
                ColumnName=""{3}"" />
        </i:Interaction.Behaviors>
    </Image>
</DataTemplate>", imageHeight, imageWidth, string.IsNullOrWhiteSpace(column.Prefix) ? null : string.Format(CultureInfo.InvariantCulture, "{0}.", column.Prefix), column.ColumnName, typeof(HightlightImageBehavior).Name, typeof(
                        StringToHashSetConverter).Name);

                var col = new GridViewDataColumn
                              {
                                  Header = column.Header,
                                  UniqueName = fullName,
                                  DataMemberBinding = new Binding(fullName),
                                  CellTemplate = (DataTemplate)XamlReader.Load(templateText),
                                  FooterCellStyle = (Style)dict["footerCellStyle"],
                                  GroupFooterCellStyle = (Style)dict["groupFooterCellStyle"],
                                  IsGroupable = column.IsGroupable,
                                  DataType = typeof(string),
                                  Width = column.Width == 0.0 ? new GridViewLength(1, GridViewLengthUnitType.Auto) : column.Width
                              };

                if (grid != null)
                    grid.Columns.Add(col);

                return;
            }

            // if item have AdditionalDataPropertyName property equals column name + "Url",
            // then this column will be hyperlink, else normal column.
            if (column.AdditionalDataPropertyName != null)
            {
                var col = new GridViewDataColumn
                              {
                                  Header = column.Header,
                                  UniqueName = fullName,
                                  DataMemberBinding =
                                      new Binding(column.AdditionalDataPropertyName)
                                          {
                                              Converter = converterInfo.ConverterObject,
                                              ConverterParameter = converterInfo.ConverterParameter
                                          },
                                  CellTemplate = GetCellTemplateHyperlink(column),
                                  GroupFooterCellStyle = (Style)dict["groupFooterCellStyle"],
                                  FooterCellStyle = (Style)dict["footerCellStyle"],
                                  IsGroupable = column.IsGroupable,
                                  DataType = column.Property.PropertyType,
                                  Width = column.Width == 0.0 ? new GridViewLength(1, GridViewLengthUnitType.Auto) : column.Width
                              };

                if (grid != null)
                    grid.Columns.Add(col);
            }
            else
            {
                if (column.IsBase && column.ColumnName == Constants.IdColumnName && column.Property.PropertyType == typeof(int))
                {
                    return;
                }

                if (column.IsBase && column.ColumnName == Constants.VersionDate)
                {
                    return;
                }

                if (column.IsBase && column.ColumnName == Constants.VersionNumber)
                {
                    return;
                }

                if (column.IsBase && Constants.DerivedProcessDisplayNameColumnName.Equals(column.ColumnName))
                {
                    return;
                }

                if (grid != null)
                {
                    grid.Columns.Add(new GridViewDataColumn
                                         {
                                             Header = column.Header,
                                             UniqueName = fullName,
                                             DataMemberBinding = new Binding(fullName)
                                                                     {
                                                                         Converter = converterInfo.ConverterObject,
                                                                         ConverterParameter = converterInfo.ConverterParameter
                                                                     },
                                             CellTemplate = GetCellTemplate(column, converterInfo, grid),
                                             GroupFooterCellStyle = (Style)dict["groupFooterCellStyle"],
                                             FooterCellStyle = (Style)dict["footerCellStyle"],
                                             DataType = column.Property.PropertyType,
                                             IsGroupable = true,
                                             Width = column.Width == 0.0 ? new GridViewLength(1, GridViewLengthUnitType.Auto) : column.Width
                                         });
                }
            }
        }
예제 #14
0
        /// <summary>
        /// Updates aggregate function according to aggregation result.
        /// </summary>
        /// <param name="gridColumn">The grid column.</param>
        /// <param name="columnItem">The column item.</param>
        /// <param name="aggregateDefinition">The aggregate definition.</param>
        /// <param name="result">The aggregate result.</param>
        private static void UpdateAggregationResult(GridViewColumn gridColumn, IColumnItem columnItem, AggregateDefinition aggregateDefinition, AggregateResult result)
        {
            if (aggregateDefinition == null || result == null)
                return;

            UpdateFunctions(aggregateDefinition.FunctionName, result, gridColumn);
            UpdateCriteriaList(aggregateDefinition, columnItem);
        }
예제 #15
0
 /// <summary>
 /// Determines whether [is column system from base] [the specified column].
 /// </summary>
 /// <param name="column">The column.</param>
 /// <returns><c>true</c> if [is column system from base] [the specified column]; otherwise, <c>false</c>.</returns>
 public static bool IsColumnSystemFromBase(IColumnItem column)
 {
     return column != null && (column.Prefix != null && column.Prefix.StartsWith(Constants.BaseInfoPropertyName, StringComparison.Ordinal) && Constants.BuildInColumns.Contains(column.ColumnName));
 }
예제 #16
0
            private void BuildTextSearchPanel(KeyEventHandler keyUpEvent,
                                              Panel txtSearchPanel,
                                              DataGridTextColumn col,
                                              IColumnItem columnVm,
                                              Style watermarkTextbox)
            {
                if (txtSearchPanel != null)
                {
                    var widthBind = new Binding
                    {
                        Path               = new PropertyPath("ActualWidth"),
                        Source             = col,
                        Mode               = BindingMode.OneWay,
                        Converter          = _mAdjustConverter,
                        ConverterParameter = "-2"
                    };

                    var visibilityBind = new Binding
                    {
                        Path   = new PropertyPath("Visibility"),
                        Source = col,
                        Mode   = BindingMode.OneWay,
                    };

                    TextBox txt = new TextBox();

                    if (watermarkTextbox != null)
                    {
                        txt.Style = watermarkTextbox;
                    }

                    txt.Name = GetTextBoxName(columnVm.Field);
                    columnVm.SetFilterControlName(txt.Name);
                    txt.ToolTip =
                        string.Format(
                            Strings.Resources.FilteredGridManager_BuildDataGrid_FilterTextBox_Tooltip,
                            columnVm.Header);
                    txt.Tag           = txt.ToolTip.ToString().ToLower();
                    txt.Text          = string.Empty;
                    txt.AcceptsReturn = false;

                    // Bind width of filter text box to ActualWidth of datagrid column
                    txt.SetBinding(WidthProperty, widthBind);

                    // Bind visibility of text box to visibility of the column
                    txt.SetBinding(VisibilityProperty, visibilityBind);

                    // Bind column to width property to viewmodel to enable its persistence
                    // The save function copies ActualWidth into the Width field and persists it
                    Binding b = new Binding("ActualWidth")
                    {
                        Source = col
                    };
                    BindingOperations.SetBinding(columnVm.ActualWidth, BindSupport.WidthProperty, b);

                    if (keyUpEvent != null)
                    {
                        txt.KeyUp += keyUpEvent;
                    }

                    RegisterControl(txtSearchPanel, txt.Name, txt);
                    txtSearchPanel.Children.Add(txt);
                }
            }
예제 #17
0
        /// <summary>
        /// Updates aggregate criterias in the column item specified.
        /// </summary>
        /// <param name="aggregateDefinition">The aggregate definition.</param>
        /// <param name="columnItem">The column item.</param>
        private static void UpdateCriteriaList(AggregateDefinition aggregateDefinition, IColumnItem columnItem)
        {
            if (columnItem == null)
                return;

            var criteriaList = columnItem.AggregateCriteriaList;

            if (criteriaList.All(x => x.FunctionName != aggregateDefinition.FunctionName))
            {
                criteriaList.Add(aggregateDefinition);
            }
        }
예제 #18
0
 private static AggregateDefinition CreateAggregateDefinition(GridViewBoundColumnBase gridColumn, IColumnItem columnItem, SummaryTypes aggregateType)
 {
     return AggregateDefinition.Create(
         columnName: string.IsNullOrEmpty(columnItem.AdditionalDataPropertyName)
             ? columnItem.Property.Name
             : columnItem.AdditionalDataPropertyName,
         summaryType: aggregateType.ToString(),
         customConverter: gridColumn.DataMemberBinding.Converter == null
             ? null
             : gridColumn.DataMemberBinding.Converter.GetType().AssemblyQualifiedName,
         targetType: columnItem.Property.PropertyType.FullName,
         typeName: columnItem.Property.PropertyType.ToString(),
         converterParameter: gridColumn.DataMemberBinding.ConverterParameter == null
             ? null
             : gridColumn.DataMemberBinding.ConverterParameter.ToString());
 }
예제 #19
0
        /// <summary>Gets the group format string.</summary>
        /// <param name="column">column</param>
        /// <param name="converterInfo">The converter information.</param>
        private static string GetGroupFormatString(IColumnItem column, ConverterInfo converterInfo)
        {
            if (converterInfo.ConverterObject is NumberToPercentConverter)
            {
                var numericAttribute = (NumericAttribute)(from d in column.Property.GetCustomAttributes(typeof(NumericAttribute), false) select d).FirstOrDefault();
                if (numericAttribute != null)
                    return string.Format(CultureInfo.InvariantCulture, "{{0:P{0}}}", numericAttribute.NumberOfDigits);
            }
            else if (column.Property != null && column.Property.PropertyType == typeof(DateTime?))
            {
                switch (ReferenceFieldsHelper.GetDateTimeFormatEnum(column.Property))
                {
                    case DateTimeFormat.Date:
                        return "{0:d}";
                    case DateTimeFormat.Time:
                        return "{0:t}";
                    default:
                        return "{0:g}";
                }
            }

            return string.Empty;
        }
예제 #20
0
        private static void RemoveAggregateFunction(AggregateDefinition aggregateDefinition, GridViewColumn gridColumn, IColumnItem columnItem)
        {
            if (aggregateDefinition == null ||
                gridColumn == null ||
                columnItem == null)
            {
                return;
            }

            var function = gridColumn.AggregateFunctions.FirstOrDefault(x => x.FunctionName == aggregateDefinition.FunctionName);
            if (function != null)
                gridColumn.AggregateFunctions.Remove(function);

            columnItem.AggregateCriteriaList.Remove(aggregateDefinition);
        }