private void RefreshColumn(ColumnInfoNodeWrapper frameColumn, GridColumn column) { column.Caption = frameColumn.Caption; if (string.IsNullOrEmpty(column.Caption)) { column.Caption = column.FieldName; } if (!string.IsNullOrEmpty(frameColumn.DisplayFormat)) { column.DisplayFormat.FormatString = frameColumn.DisplayFormat; column.DisplayFormat.FormatType = FormatType.Custom; column.GroupFormat.FormatString = frameColumn.DisplayFormat; column.GroupFormat.FormatType = FormatType.Custom; } column.GroupIndex = frameColumn.GroupIndex; column.SortIndex = frameColumn.SortIndex; column.SortOrder = frameColumn.SortOrder; column.Width = frameColumn.Width; column.VisibleIndex = frameColumn.VisibleIndex; column.SummaryItem.SummaryType = frameColumn.SummaryType; }
public GridColumn AddColumn(ColumnInfoNodeWrapper columnInfo, Type objectType, ListViewInfoNodeWrapper model) { ColumnInfoNodeWrapper frameColumn = model.Columns.FindColumnInfo(columnInfo.PropertyName); if (frameColumn == null) { model.Columns.Node.AddChildNode(columnInfo.Node); } var column = new GridColumn(); GridView.Columns.Add(column); var customArgs = new CustomCreateColumnEventArgs(column, columnInfo, repositoryFactory); if (!customArgs.Handled) { IMemberInfo memberInfo = XafTypesInfo.Instance.FindTypeInfo(objectType).FindMember(columnInfo.PropertyName); if (memberInfo != null) { column.FieldName = memberInfo.BindingName; if (memberInfo.MemberType.IsEnum) { column.SortMode = ColumnSortMode.Value; } else if (!SimpleTypes.IsSimpleType(memberInfo.MemberType)) { column.SortMode = ColumnSortMode.DisplayText; } column.FilterMode = SimpleTypes.IsClass(memberInfo.MemberType) ? ColumnFilterMode.DisplayText : ColumnFilterMode.Value; } else { column.FieldName = columnInfo.PropertyName; } RefreshColumn(columnInfo, column); if (memberInfo != null) { if (repositoryFactory != null) { bool isGranted = DataManipulationRight.CanRead(objectType, columnInfo.PropertyName, null, ((ListView)View).CollectionSource); RepositoryItem repositoryItem = repositoryFactory.CreateRepositoryItem(!isGranted, new DetailViewItemInfoNodeWrapper(columnInfo.Node), objectType); if (repositoryItem != null) { gridControl.RepositoryItems.Add(repositoryItem); column.ColumnEdit = repositoryItem; column.OptionsColumn.AllowEdit = IsDataShownOnDropDownWindow(repositoryItem) ? true : model.AllowEdit; column.AppearanceCell.Options.UseTextOptions = true; column.AppearanceCell.TextOptions.HAlignment = WinAlignmentProvider.GetAlignment(memberInfo.MemberType); repositoryItem.ReadOnly |= !model.AllowEdit; if ((repositoryItem is ILookupEditRepositoryItem) && ((ILookupEditRepositoryItem)repositoryItem).IsFilterByValueSupported) { column.FilterMode = ColumnFilterMode.Value; } if ((repositoryItem is RepositoryItemPictureEdit) && (((RepositoryItemPictureEdit)repositoryItem).CustomHeight > 0)) { GridView.OptionsView.RowAutoHeight = true; } } } if ((column.ColumnEdit == null) && !typeof(IList).IsAssignableFrom(memberInfo.MemberType)) { column.OptionsColumn.AllowEdit = false; column.FieldName = GetDisplayablePropertyName(columnInfo.PropertyName, XafTypesInfo.Instance.FindTypeInfo(objectType)); } } } if (!gridControl.IsLoading && gridView.DataController.Columns.GetColumnIndex(column.FieldName) == -1) { gridView.DataController.RePopulateColumns(); } return column; }
public ColumnCreatedEventArgs(LayoutViewColumn column, ColumnInfoNodeWrapper columnInfo) { this.column = column; this.columnInfo = columnInfo; }
public LayoutViewColumn AddColumn(ColumnInfoNodeWrapper columnInfo) { if (columnsProperties.ContainsValue(columnInfo.PropertyName)) { throw new ArgumentException(string.Format(SystemExceptionLocalizer.GetExceptionMessage(ExceptionId.GridColumnExists), columnInfo.PropertyName), "ColumnInfo"); } ColumnInfoNodeWrapper frameColumn = Model.Columns.FindColumnInfo(columnInfo.PropertyName); if (frameColumn == null) { Model.Columns.Node.AddChildNode(columnInfo.Node); } LayoutViewColumn column = new LayoutViewColumn(); columnsProperties.Add(column, columnInfo.PropertyName); LayoutView.Columns.Add(column); CustomCreateColumnEventArgs customArgs = new CustomCreateColumnEventArgs(column, columnInfo, repositoryFactory); OnCustomCreateColumn(customArgs); if (!customArgs.Handled) { IMemberInfo memberDescriptor = XafTypesInfo.Instance.FindTypeInfo(ObjectType).FindMember(columnInfo.PropertyName); if (memberDescriptor != null) { column.FieldName = memberDescriptor.BindingName; if (memberDescriptor.MemberType.IsEnum) { column.SortMode = ColumnSortMode.Value; } else if (!SimpleTypes.IsSimpleType(memberDescriptor.MemberType)) { column.SortMode = ColumnSortMode.DisplayText; } if (SimpleTypes.IsClass(memberDescriptor.MemberType)) { column.FilterMode = ColumnFilterMode.DisplayText; } else { column.FilterMode = ColumnFilterMode.Value; } } else { column.FieldName = columnInfo.PropertyName; } RefreshColumn(columnInfo, column); if (memberDescriptor != null) { if (repositoryFactory != null) { RepositoryItem repositoryItem = repositoryFactory.CreateRepositoryItem(false, new DetailViewItemInfoNodeWrapper(columnInfo.Node), ObjectType); if (repositoryItem != null) { grid.RepositoryItems.Add(repositoryItem); column.ColumnEdit = repositoryItem; column.OptionsColumn.AllowEdit = IsDataShownOnDropDownWindow(repositoryItem) ? true : editMode != EditMode.ReadOnly; repositoryItem.ReadOnly |= editMode != EditMode.Editable; if ((repositoryItem is ILookupEditRepositoryItem) && ((ILookupEditRepositoryItem)repositoryItem).IsFilterByValueSupported) { column.FilterMode = ColumnFilterMode.Value; } } } if ((column.ColumnEdit == null) && !typeof(IList).IsAssignableFrom(memberDescriptor.MemberType)) { column.OptionsColumn.AllowEdit = false; column.FieldName = GetDisplayablePropertyName(columnInfo.PropertyName); } } } OnColumnCreated(column, columnInfo); return column; }
protected virtual void OnColumnCreated(LayoutViewColumn column, ColumnInfoNodeWrapper columnInfo) { if (ColumnCreated != null) { ColumnCreatedEventArgs args = new ColumnCreatedEventArgs(column, columnInfo); ColumnCreated(this, args); } }
public CustomCreateColumnEventArgs(LayoutViewColumn column, ColumnInfoNodeWrapper columnInfo, RepositoryEditorsFactory repositoryFactory) { this.column = column; this.columnInfo = columnInfo; this.repositoryFactory = repositoryFactory; }