Пример #1
0
        protected internal void ExcelInit(ITemplateDefinitionPart header, ITemplateDefinitionPart body, ITemplateDefinitionPart footer)
        {
            Init(header, body, footer);

            RetrieveSelectionChangeMethod();
            RetrieveContextualMenu();
            RetrieveDecorator();
        }
Пример #2
0
        protected virtual void Init(ITemplateDefinitionPart header, ITemplateDefinitionPart body, ITemplateDefinitionPart footer)
        {
            Header = header;
            Body   = body;
            Footer = footer;

            BindingType = BindingType.CreateInstance(this);

            ((TemplateDefinitionPart)Header)?.Init();
            ((TemplateDefinitionPart)Body)?.Init();
            ((TemplateDefinitionPart)Footer)?.Init();
        }
Пример #3
0
 protected BindingFilterDefinition(ITemplateDefinitionPart templateDefinitionPart, string definition, string watermark, IEnumerable <string> path)
 {
     FilterOwner            = templateDefinitionPart;
     Watermark              = watermark;
     this.definition        = definition;
     DefinitionToFilterName = path.Last();
     DefinitionToFilterName = DefinitionToFilterName.Replace('.', '_');
     if (path.Count() > 1)
     {
         propertyToFilterPath = path.Take(path.Count() - 1);
     }
 }
Пример #4
0
        /// <summary>For the header/footer</summary>
        public static BindingContextPart CreateHeaderOrFooterBindingContextPart(IBindingContext parent, ITemplateDefinitionPart templateDefinitionPart, BindingContextPartType partType, object dataSource)
        {
            BindingContextPart ret = new BindingContextPart(parent, templateDefinitionPart, partType);

            ret.Elements         = new BindingContextElement[] { new BindingContextElement(ret, dataSource, 0) };
            ret.ElementsToRender = ret.Elements.ToList();
            return(ret);
        }
Пример #5
0
        public static BindingContextPart CreateBodyBindingContextPart(BindingContext parent, ITemplateDefinitionPart templateDefinitionPart, List <object> dataSourceAsList, ISortersAndFilters externalSorterAndFilter, ISortersAndFilters templatedSorterAndFilter)
        {
            BindingContextPart ret = new BindingContextPart(parent, templateDefinitionPart, BindingContextPartType.Body);

            ret.ExternalSorterAndFilter = parent.ExternalSortsAndFilters;

            int elementIndex = 0;
            // Bug => Closure !!!!
            // ret.Elements = dataSourceAsList.Select(ds => new BindingContextElement(ret, ds, elementIndex++));
            List <IBindingContextElement> tmpElements = new List <IBindingContextElement>();

            foreach (object obj in dataSourceAsList)
            {
                tmpElements.Add(new BindingContextElement(ret, obj, elementIndex++));
            }
            ret.Elements = tmpElements;

            // The sorterers and filters defined outside templates have the priority
            if (parent.ExternalSortsAndFilters != null)
            {
                Dictionary <object, IBindingContextElement> contextItemByElement = ret.Elements.ToDictionary(e => e.Element, e => e);
                IEnumerable <object> elements = parent.ExternalSortsAndFilters.Execute(contextItemByElement.Keys) as IEnumerable <object>;
                ret.ElementsToRender = elements.Select(e => { IBindingContextElement el = null;
                                                              contextItemByElement.TryGetValue(e, out el);
                                                              return(el); });
            }
            else
            {
                ret.ElementsToRender = ret.Elements;
            }

            // Manage the filters defined in the templates
            if (templatedSorterAndFilter != null)
            {
                Dictionary <object, IBindingContextElement> contextItemByElement = ret.ElementsToRender.ToDictionary(e => e.Element, e => e);
                IEnumerable <object> elements = templatedSorterAndFilter.Execute(contextItemByElement.Keys) as IEnumerable <object>;
                ret.ElementsToRender = elements.Select(e => { IBindingContextElement el = null;
                                                              contextItemByElement.TryGetValue(e, out el);
                                                              return(el); });
            }
            return(ret);
        }
Пример #6
0
 private BindingContextPart(IBindingContext parent, ITemplateDefinitionPart templateDefinitionPart, BindingContextPartType partType)
 {
     ParentContext          = parent;
     TemplateDefinitionPart = templateDefinitionPart;
     PartType = partType;
 }