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