public UnsupportedControlTemplate(ICellMetadata metadata, string validationGroup,
                                   IDictionary <string, CellBinding> bindings, bool enabled)
     : base(metadata, validationGroup, bindings, enabled)
 {
     _colSpan = metadata.ColumnSpan;
     _rowSpan = metadata.RowSpan;
 }
コード例 #2
0
        protected CellTemplate(ICellMetadata metadata, string validationGroup, IDictionary <string, CellBinding> bindings)
        {
            metadata.ThrowOnNull("metadata");
            bindings.ThrowOnNull("bindings");

            Bindings        = bindings;
            Metadata        = metadata;
            ValidationGroup = validationGroup;
        }
コード例 #3
0
        /// <summary>
        /// Method to create cell template
        /// </summary>
        /// <param name="cellMetadata"></param>
        /// <param name="entityMetadata"></param>
        /// <returns></returns>
        /// <exception cref="ApplicationException"></exception>
        public virtual ICellTemplate CreateCellTemplate(ICellMetadata cellMetadata, Microsoft.Xrm.Sdk.Metadata.EntityMetadata entityMetadata)
        {
            var fields = Fields.Where(f => f.AttributeName == cellMetadata.DataFieldName).ToList();

            if (fields.Count() > 1)
            {
                throw new ApplicationException("Only one CrmEntityFormViewField with an AttributeName {0} can be specified.".FormatWith(cellMetadata.DataFieldName));
            }

            var field = fields.FirstOrDefault();

            var formXmlCellMetadata = cellMetadata as FormXmlCellMetadata;

            if (formXmlCellMetadata != null)
            {
                formXmlCellMetadata.FormView = FormView;

                if (formXmlCellMetadata.FormView != null && formXmlCellMetadata.FormView.Mode.HasValue)
                {
                    if (formXmlCellMetadata.FormView.Mode.Value == FormViewMode.Insert && !formXmlCellMetadata.IsValidForCreate)
                    {
                        formXmlCellMetadata.ReadOnly = true;
                    }

                    if (formXmlCellMetadata.FormView.Mode.Value == FormViewMode.Edit && !formXmlCellMetadata.IsValidForUpdate)
                    {
                        formXmlCellMetadata.ReadOnly = true;
                    }
                }

                if ((formXmlCellMetadata.IsNotesControl || formXmlCellMetadata.IsActivityTimelineControl) && (FormView.Mode == FormViewMode.Edit || FormView.Mode == FormViewMode.ReadOnly))
                {
                    return(new NotesControlTemplate(formXmlCellMetadata, ContextName, CellBindings, formXmlCellMetadata.IsActivityTimelineControl));
                }

                if (formXmlCellMetadata.IsWebResource)
                {
                    if (formXmlCellMetadata.WebResourceIsHtml)
                    {
                        return(new HtmlWebResourceControlTemplate(formXmlCellMetadata, ContextName, RenderWebResourcesInline));
                    }

                    if (formXmlCellMetadata.WebResourceIsImage)
                    {
                        return(new ImageWebResourceControlTemplate(formXmlCellMetadata));
                    }
                }

                if (formXmlCellMetadata.IsSharePointDocuments)
                {
                    return(new SharePointDocumentsControlTemplate(formXmlCellMetadata, ContextName, CellBindings));
                }

                if (formXmlCellMetadata.IsSubgrid && (FormView.Mode == FormViewMode.Edit || FormView.Mode == FormViewMode.ReadOnly))
                {
                    return(new SubgridControlTemplate(formXmlCellMetadata, ContextName, CellBindings));
                }

                if (formXmlCellMetadata.IsQuickForm)
                {
                    return(new CrmQuickFormControlTemplate(formXmlCellMetadata, ContextName, CellBindings));
                }

                if (formXmlCellMetadata.HasAttributeType("lookup"))
                {
                    if (formXmlCellMetadata.LookupTargets.Length >= 1 && formXmlCellMetadata.LookupTargets[0] == "subject")
                    {
                        return(new SubjectControlTemplate(field, formXmlCellMetadata, ValidationGroup, CellBindings));
                    }

                    if ((field != null && field.Type == FieldType.Dropdown) || formXmlCellMetadata.ControlStyle == WebForms.WebFormMetadata.ControlStyle.LookupDropdown)
                    {
                        return(new LookupControlTemplate(field, formXmlCellMetadata, ValidationGroup, CellBindings));
                    }

                    return(new ModalLookupControlTemplate(field, formXmlCellMetadata, ValidationGroup, CellBindings));
                }

                if (formXmlCellMetadata.HasAttributeType("customer"))
                {
                    if ((field != null && field.Type == FieldType.Dropdown) || formXmlCellMetadata.ControlStyle == WebForms.WebFormMetadata.ControlStyle.LookupDropdown)
                    {
                        return(new CustomerControlTemplate(field, formXmlCellMetadata, ValidationGroup, CellBindings));
                    }

                    return(new ModalLookupControlTemplate(field, formXmlCellMetadata, ValidationGroup, CellBindings));
                }

                if (formXmlCellMetadata.IsFullNameControl)
                {
                    return(new FullNameControlTemplate(field, formXmlCellMetadata, ValidationGroup, CellBindings, entityMetadata, FormView.Mode));
                }

                if (formXmlCellMetadata.IsAddressCompositeControl)
                {
                    return(new AddressCompositeControlTemplate(field, formXmlCellMetadata, ValidationGroup, CellBindings, entityMetadata, FormView.Mode));
                }

                if (ShowOwnerFields.GetValueOrDefault(false) && formXmlCellMetadata.HasAttributeType("owner"))
                {
                    if ((field != null && field.Type == FieldType.Dropdown) || formXmlCellMetadata.ControlStyle == WebForms.WebFormMetadata.ControlStyle.LookupDropdown)
                    {
                        return(new LookupControlTemplate(field, formXmlCellMetadata, ValidationGroup, CellBindings));
                    }

                    return(new ModalLookupControlTemplate(field, formXmlCellMetadata, ValidationGroup, CellBindings));
                }

                if (cellMetadata.HasAttributeType("string"))
                {
                    switch (cellMetadata.Format)
                    {
                    case "Email":
                        return(new EmailStringControlTemplate(field, formXmlCellMetadata, ValidationGroup, CellBindings));

                    case "Url":
                        return(new UrlStringControlTemplate(field, formXmlCellMetadata, ValidationGroup, CellBindings));

                    case "TickerSymbol":
                        return(new TickerSymbolStringControlTemplate(field, formXmlCellMetadata, ValidationGroup, CellBindings));

                    case "TextArea":
                        return(new MemoControlTemplate(field, formXmlCellMetadata, ValidationGroup, CellBindings));

                    default:
                        return(new StringControlTemplate(field, formXmlCellMetadata, ValidationGroup, CellBindings));
                    }
                }

                if (cellMetadata.HasAttributeType("picklist"))
                {
                    // determine if the picklist should be a multi-select picklist

                    var picklistvaluesfield = entityMetadata.Attributes.FirstOrDefault(a => a.LogicalName == string.Format("{0}selectedvalues", cellMetadata.DataFieldName));

                    if (picklistvaluesfield != null)
                    {
                        return(new MultiSelectPicklistControlTemplate(field, formXmlCellMetadata, ValidationGroup, CellBindings));
                    }

                    return(new PicklistControlTemplate(field, formXmlCellMetadata, ValidationGroup, CellBindings));
                }

                if (cellMetadata.HasAttributeType("boolean"))
                {
                    return(formXmlCellMetadata.ControlStyle == WebForms.WebFormMetadata.ControlStyle.MultipleChoice ? new MultipleChoiceControlTemplate(field, formXmlCellMetadata, ValidationGroup, CellBindings) : new BooleanControlTemplate(field, formXmlCellMetadata, ValidationGroup, CellBindings));
                }

                if (cellMetadata.HasAttributeType("memo"))
                {
                    return(new MemoControlTemplate(field, formXmlCellMetadata, ValidationGroup, CellBindings));
                }

                if (cellMetadata.HasAttributeType("decimal"))
                {
                    return(new DecimalControlTemplate(field, formXmlCellMetadata, ValidationGroup, CellBindings));
                }

                if (cellMetadata.HasAttributeType("datetime"))
                {
                    return(new DateTimeControlTemplate(field, formXmlCellMetadata, ValidationGroup, CellBindings));
                }

                if (cellMetadata.HasAttributeType("double"))
                {
                    return(new DoubleControlTemplate(field, formXmlCellMetadata, ValidationGroup, CellBindings));
                }

                if (cellMetadata.HasAttributeType("integer"))
                {
                    switch (cellMetadata.Format)
                    {
                    case "Duration":
                        return(new DurationControlTemplate(field, formXmlCellMetadata, ValidationGroup, CellBindings));

                    case "Language":
                        return(new LanguageControlTemplate(field, formXmlCellMetadata, ValidationGroup, CellBindings));

                    case "TimeZone":
                        return(new TimeZoneControlTemplate(field, formXmlCellMetadata, ValidationGroup, CellBindings));

                    default:
                        if (formXmlCellMetadata.ControlStyle == WebForms.WebFormMetadata.ControlStyle.RankOrderAllowTies || formXmlCellMetadata.ControlStyle == WebForms.WebFormMetadata.ControlStyle.RankOrderNoTies)
                        {
                            return(new RankOrderControlTemplate(field, formXmlCellMetadata, ValidationGroup, CellBindings));
                        }
                        if (formXmlCellMetadata.ControlStyle == WebForms.WebFormMetadata.ControlStyle.ConstantSum)
                        {
                            return(new ConstantSumControlTemplate(field, formXmlCellMetadata, ValidationGroup, CellBindings));
                        }
                        if (formXmlCellMetadata.ControlStyle == WebForms.WebFormMetadata.ControlStyle.StackRank)
                        {
                            return(new StackRankControlTemplate(field, formXmlCellMetadata, ValidationGroup, CellBindings));
                        }
                        return(new IntegerControlTemplate(field, formXmlCellMetadata, ValidationGroup, CellBindings));
                    }
                }

                if (cellMetadata.HasAttributeType("state"))
                {
                    return(new StateControlTemplate(field, formXmlCellMetadata, ValidationGroup, CellBindings));
                }

                if (cellMetadata.HasAttributeType("status"))
                {
                    return(new StatusReasonControlTemplate(field, formXmlCellMetadata, ValidationGroup, CellBindings));
                }

                if (cellMetadata.HasAttributeType("money"))
                {
                    return(new MoneyControlTemplate(field, formXmlCellMetadata, ValidationGroup, CellBindings, ContextName));
                }
            }
            else
            {
                if (cellMetadata.HasAttributeType("string"))
                {
                    return(string.Equals("email", cellMetadata.Format, StringComparison.InvariantCultureIgnoreCase)
                                                ? new Microsoft.Xrm.Portal.Web.UI.CrmEntityFormView.EmailStringControlTemplate(cellMetadata, ValidationGroup, CellBindings)
                                                : new Microsoft.Xrm.Portal.Web.UI.CrmEntityFormView.StringControlTemplate(cellMetadata, ValidationGroup, CellBindings));
                }

                if (cellMetadata.HasAttributeType("picklist"))
                {
                    return(new Microsoft.Xrm.Portal.Web.UI.CrmEntityFormView.PicklistControlTemplate(cellMetadata, ValidationGroup, CellBindings));
                }

                if (cellMetadata.HasAttributeType("boolean"))
                {
                    return(new Microsoft.Xrm.Portal.Web.UI.CrmEntityFormView.BooleanControlTemplate(cellMetadata, ValidationGroup, CellBindings));
                }

                if (cellMetadata.HasAttributeType("memo"))
                {
                    return(new Microsoft.Xrm.Portal.Web.UI.CrmEntityFormView.MemoControlTemplate(cellMetadata, ValidationGroup, CellBindings));
                }

                if (cellMetadata.HasAttributeType("datetime"))
                {
                    return(new Microsoft.Xrm.Portal.Web.UI.CrmEntityFormView.DateTimeControlTemplate(cellMetadata, ValidationGroup, CellBindings));
                }

                if (cellMetadata.HasAttributeType("integer"))
                {
                    return(new Microsoft.Xrm.Portal.Web.UI.CrmEntityFormView.IntegerControlTemplate(cellMetadata, ValidationGroup, CellBindings));
                }

                if (cellMetadata.HasAttributeType("money"))
                {
                    return(new Microsoft.Xrm.Portal.Web.UI.CrmEntityFormView.MoneyControlTemplate(cellMetadata, ValidationGroup, CellBindings));
                }

                if (cellMetadata.HasAttributeType("datetime"))
                {
                    return(new Microsoft.Xrm.Portal.Web.UI.CrmEntityFormView.DateTimeControlTemplate(cellMetadata, ValidationGroup, CellBindings));
                }
            }

            if (!string.IsNullOrEmpty(cellMetadata.AttributeType) && EnableUnsupportedFields)
            {
                return(new UnsupportedControlTemplate(cellMetadata, ValidationGroup, CellBindings, EnableUnsupportedFields));
            }

            return(new EmptyCellTemplate(cellMetadata));
        }
コード例 #4
0
 public DateTimeControlTemplate(ICellMetadata metadata, string validationGroup, IDictionary <string, CellBinding> bindings) : base(metadata, validationGroup, bindings)
 {
 }
 public UnsupportedControlTemplate(ICellMetadata metadata, string validationGroup, IDictionary <string, CellBinding> bindings, bool enabled) : base(metadata, validationGroup, bindings)
 {
     _enabled = enabled;
 }
コード例 #6
0
 /// <summary>
 /// Class initialization
 /// </summary>
 /// <param name="metadata"></param>
 /// <param name="validationGroup"></param>
 /// <param name="bindings"></param>
 public IgnoreCellTemplate(ICellMetadata metadata, string validationGroup, IDictionary <string, CellBinding> bindings)
     : base(metadata, validationGroup, bindings)
 {
 }
コード例 #7
0
 public EmptyCellTemplate(ICellMetadata cellMetadata)
 {
     ColumnSpan = cellMetadata.ColumnSpan;
     RowSpan    = cellMetadata.RowSpan;
     Enabled    = true;
 }