Пример #1
0
 protected virtual IGridRowBuilder CreateDetailRowBuilder(GridRenderingData renderingData, GridItem item)
 {
     return(new GridDetailRowBuilder
     {
         Colspan = (renderingData.Colspan - 1) - item.GroupLevel,
         DataItem = item.DataItem,
         Template = renderingData.DetailTemplate,
         Expanded = item.Expanded,
         IsMasterAlternate = item is GridDetailViewItem && ((item as GridDetailViewItem).Parent.State & GridItemStates.Alternating) == GridItemStates.Alternating,
         Html = item.DetailRowHtml,
         HtmlAttributes = item.DetailRowHtmlAttributes
     });
 }
Пример #2
0
 protected virtual IGridEditFormBuilder CreateEditFormBuilder(GridRenderingData renderingData, GridItem item)
 {
     return(CreateEditFormBuilder(renderingData,
                                  item,
                                  (command) => command.CreateEditButtons(renderingData.UrlBuilder, renderingData.HtmlHelper),
                                  renderingData.UrlBuilder.UpdateUrl
                                  ));
 }
Пример #3
0
        private IGridRowBuilder CreateInLineRowBuilder(GridRenderingData renderingData, GridItem item, Func <object, string> action, Func <IGridColumn, IGridHtmlHelper, IGridDataCellBuilder> cellBuilder)
        {
            var tableBuilder = tableBuilderFactory.CreateTableBuilder(renderingData.Columns.Select(c => new GridColData {
                Width = c.Width, Hidden = c.Hidden
            }));

            var cellBuilders = renderingData.Columns.Select(column => cellBuilder(column, renderingData.HtmlHelper));

            var formHtmlAttributes = CreateFormAttributes(renderingData.FormId, action(item.DataItem));

            //formHtmlAttributes.Merge(renderingData.EditFormHtmlAttributes);

            return(new GridInLineEditRowBuilder(tableBuilder, new GridFormBuilder(formHtmlAttributes),
                                                renderingData.Colspan, item.DataItem, cellBuilders));
        }
Пример #4
0
        protected virtual IGridRowBuilder CreateDataRowBuilder(GridRenderingData renderingData, GridItem item)
        {
            if (renderingData.RowTemplate != null)
            {
                return(new GridTemplateRowBuilder(td => renderingData.RowTemplate(item.DataItem, td), renderingData.Colspan));
            }

            return(new GridDataRowBuilder(item.DataItem, renderingData.Columns.Select(column => cellBuilderFactory.CreateDisplayCellBuilder(column, renderingData.HtmlHelper))));
        }
Пример #5
0
 protected virtual IGridRowBuilder CreatePopUpInsertRowBuilder(GridRenderingData renderingData, GridItem item)
 {
     return(new GridPopUpInsertRowBuilder(CreateInsertFormBuilder(renderingData, item), renderingData.PopUpContainer));
 }
Пример #6
0
        private IGridEditFormBuilder CreateEditFormBuilder(GridRenderingData renderingData, GridItem item,
                                                           Func <IGridActionCommand, IEnumerable <IGridButtonBuilder> > buttons, Func <object, string> action)
        {
            var commands = renderingData.Columns.OfType <IGridActionColumn>().SelectMany(column => column.Commands);

            var editCommand = commands.OfType <GridEditActionCommand>().FirstOrDefault() ?? new GridEditActionCommand();

            var buttonBuilders = buttons(editCommand).Select(builder =>
            {
                Func <IHtmlNode> result = () => builder.Create(item.DataItem);
                return(result);
            });

            var formHtmlAttributes = CreateFormAttributes(renderingData.FormId, action(item.DataItem));

            //formHtmlAttributes.Merge(renderingData.EditFormHtmlAttributes);

            return(new GridEditFormBuilder(new GridFormBuilder(formHtmlAttributes),
                                           () => renderingData.HtmlHelper.EditorForModel(item.DataItem,
                                                                                         renderingData.EditTemplateName,
                                                                                         renderingData.Columns.OfType <IGridForeignKeyColumn>().Select(c => c.SerializeSelectList),
                                                                                         renderingData.AdditionalViewData
                                                                                         ),
                                           buttonBuilders));
        }
Пример #7
0
 protected virtual IGridRowBuilder CreateInLineInsertRowBuilder(GridRenderingData renderingData, GridItem item)
 {
     return(CreateInLineRowBuilder(renderingData, item, renderingData.UrlBuilder.InsertUrl, cellBuilderFactory.CreateInsertCellBuilder));
 }
Пример #8
0
        protected virtual IGridRowBuilder CreateInsertRowBuilder(GridRenderingData renderingData, GridItem item)
        {
            switch (renderingData.EditMode)
            {
            //TODO: Implement InForm editing
            //case GridEditMode.InForm:
            //    return CreateInFormInsertRowBuilder(renderingData, item);
            case GridEditMode.PopUp:
                return(CreatePopUpInsertRowBuilder(renderingData, item));

            default:
                return(CreateInLineInsertRowBuilder(renderingData, item));
            }
        }
Пример #9
0
        protected virtual IGridRowBuilder CreateGroupFooterRowBuilder(GridRenderingData renderingData, GridItem item)
        {
            var functionsGroup      = item.DataItem as AggregateFunctionsGroup;
            var itemAggregateResult = functionsGroup.GetAggregateResults(renderingData.Aggregates);

            return(new GridGroupFooterRowBuilder(renderingData.Columns.Select(column => cellBuilderFactory.CreateGroupFooterCellBuilder(column, itemAggregateResult))));
        }
Пример #10
0
 protected virtual IGridRowBuilder CreateInFormInsertRowBuilder(GridRenderingData renderingData, GridItem item)
 {
     return(new GridInFormEditRowBuilder(CreateInsertFormBuilder(renderingData, item), renderingData.Colspan));
 }
Пример #11
0
        protected virtual IGridRowBuilder CreateGroupRowBuilder(GridRenderingData renderingData, GridItem item)
        {
            var groupKey = ((IGroup)item.DataItem).Key;

            var colspan = renderingData.Colspan - item.GroupLevel;

            var member = renderingData.GroupMembers.ElementAtOrDefault(item.GroupLevel);

            var column = renderingData.Columns.OfType <IGridBoundColumn>().FirstOrDefault(c => c.Member == member);

            var format = column != null && column.Format.HasValue() ? column.Format : "{0}";


            var template = new HtmlTemplate <GridGroupAggregateResult>
            {
                InlineTemplate = (result) => "{0}: {1}".FormatWith(result.Title, format.FormatWith(ExtractForeignKeyText(column, result.Key)))
            };

            var title = member.AsTitle();

            if (column != null)
            {
                title = column.Title.HasValue() ? column.Title : column.Member.AsTitle();
                if (column.GroupHeaderTemplate.HasValue())
                {
                    template = column.GroupHeaderTemplate;
                }
            }

            var functionsGroup      = item.DataItem as AggregateFunctionsGroup;
            var itemAggregateResult = functionsGroup.GetAggregateResults(renderingData.Aggregates);

            var aggregateResult = new GridGroupAggregateResult(title, groupKey, itemAggregateResult);

            return(new GridGroupRowBuilder((container) => template.Apply(aggregateResult, container), colspan));
        }
Пример #12
0
 protected virtual IGridRowBuilder CreateEmptyRowBuilder(GridRenderingData renderingData, GridItem item)
 {
     return(new GridEmptyRowBuilder(renderingData.Colspan, renderingData.NoRecordsTemplate));
 }
Пример #13
0
 public override bool ShouldDecorate(GridItem gridItem)
 {
     return(HasDetailView && gridItem.Type != GridItemType.EmptyRow &&
            gridItem.Type != GridItemType.GroupRow);
 }
Пример #14
0
 public override bool ShouldDecorate(GridItem gridItem)
 {
     return(gridItem.Type != GridItemType.EmptyRow);
 }
Пример #15
0
 private void AsGroupRow(GridItem item)
 {
     item.Type = GridItemType.GroupRow;
 }