protected override Type GetDefaultEditorTypeFromModel(IAliasRegistration aliasRegistration, IModelNode modelNode) { var memberEditorInfoCalculator = new MemberEditorInfoCalculator(); var parameterTypes = new[] { typeof(IEditorTypeRegistration), typeof(IAliasRegistration), typeof(IModelNode) }; var callMethod = memberEditorInfoCalculator.CallMethod("GetDefaultEditorTypeFromModel", parameterTypes, Flags.NonPublic | Flags.Instance, aliasRegistration, aliasRegistration, modelNode); return((Type)callMethod); }
protected override ColumnWrapper AddColumnCore(IModelColumn columnInfo) { var column = CreateGridColumn(); GridView.Columns.Add((GridColumn)column); IMemberInfo memberInfo = FindMemberInfoForColumn(columnInfo); 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.OptionsColumn.AllowSort = DefaultBoolean.True; column.OptionsColumn.AllowGroup = DefaultBoolean.True; } if (SimpleTypes.IsClass(memberInfo.MemberType) || memberInfo.MemberType.IsInterface) { column.FilterMode = ColumnFilterMode.DisplayText; } else { column.FilterMode = ColumnFilterMode.Value; } } else { column.FieldName = columnInfo.PropertyName; } ApplyModel(column, columnInfo); if (memberInfo != null) { if (repositoryFactory != null) { RepositoryItem repositoryItem = null; if (IsReplacedColumnByAsyncServerMode(columnInfo.PropertyName)) { MemberEditorInfoCalculator calculator = new MemberEditorInfoCalculator(); Type editorType = calculator.GetEditorType(Model.ModelClass.FindMember(memberInfo.Name)); IInplaceEditSupport propertyEditor = Activator.CreateInstance(editorType, ObjectType, columnInfo) as IInplaceEditSupport; repositoryItem = propertyEditor != null ? ((IInplaceEditSupport)propertyEditor).CreateRepositoryItem() : null; } else { repositoryItem = repositoryFactory.CreateRepositoryItem(false, columnInfo, ObjectType); } if (repositoryItem != null) { grid.RepositoryItems.Add(repositoryItem); repositoryItem.EditValueChanging += new ChangingEventHandler(repositoryItem_EditValueChanging); column.ColumnEdit = repositoryItem; column.OptionsColumn.AllowEdit = IsDataShownOnDropDownWindow(repositoryItem) ? true : AllowEdit; column.AppearanceCell.Options.UseTextOptions = true; column.AppearanceCell.TextOptions.HAlignment = WinAlignmentProvider.GetAlignment(memberInfo.MemberType); repositoryItem.ReadOnly |= !AllowEdit || ReadOnlyEditors; if (Model.UseServerMode || (columnInfo.ModelMember.Type.IsInterface && !typeof(IComparable).IsAssignableFrom(memberInfo.MemberType))) { column.FieldNameSortGroup = new ObjectEditorHelperBase(XafTypesInfo.Instance.FindTypeInfo(columnInfo.ModelMember.Type), columnInfo).GetFullDisplayMemberName(columnInfo.PropertyName); } if (repositoryItem is ILookupEditRepositoryItem) { column.FilterMode = LookupColumnFilterMode; if (LookupColumnFilterMode == ColumnFilterMode.Value) { column.OptionsFilter.AutoFilterCondition = AutoFilterCondition.Equals; column.OptionsFilter.FilterBySortField = DefaultBoolean.False; } else { column.OptionsFilter.FilterBySortField = DefaultBoolean.True; } } if (repositoryItem is RepositoryItemMemoExEdit) { column.OptionsColumn.AllowGroup = column.OptionsColumn.AllowSort = DefaultBoolean.True; } if ((repositoryItem is RepositoryItemPictureEdit) && (((RepositoryItemPictureEdit)repositoryItem).CustomHeight > 0)) { GridView.OptionsView.RowAutoHeight = true; } if (repositoryItem is RepositoryItemRtfEditEx) { column.FilterMode = ColumnFilterMode.DisplayText; } if (!repositoryItem.DisplayFormat.IsEmpty) { column.DisplayFormat.FormatType = repositoryItem.DisplayFormat.FormatType; column.DisplayFormat.Format = repositoryItem.DisplayFormat.Format; column.DisplayFormat.FormatString = repositoryItem.DisplayFormat.FormatString; } } } if ((column.ColumnEdit == null) && !typeof(IList).IsAssignableFrom(memberInfo.MemberType)) { column.OptionsColumn.AllowEdit = false; column.FieldName = GetDisplayablePropertyName(columnInfo.PropertyName); } } OnColumnCreated((GridColumn)column, columnInfo); if (!grid.IsLoading && gridView.DataController.Columns.GetColumnIndex(column.FieldName) == -1) { gridView.DataController.RePopulateColumns(); } return CreateGridColumnWrapper(column); }