Exemple #1
0
        protected override void BuildRenderTreeInternal(GridRendererContext rendererContext, PermissionContext permissionContext)
        {
            using (new MeasurableScope(sw => logger.LogInformation($"Grid grouped body rendering duration {sw.ElapsedMilliseconds}ms")))
            {
                rendererContext.OpenElement(HtmlTagNames.TableBody, rendererContext.CssClasses.TableBody);
                foreach (var group in rendererContext.TableDataSet.GroupedItems)
                {
                    try
                    {
                        rendererContext.OpenElement(HtmlTagNames.TableRow, rendererContext.CssClasses.TableGroupRow);
                        rendererContext.OpenElement(HtmlTagNames.TableColumn, rendererContext.CssClasses.TableGroupRowCell);
                        rendererContext.AddAttribute(HtmlAttributes.Colspan, rendererContext.NumberOfColumns);
                        rendererContext.OpenElement(HtmlTagNames.Button, "pagination-button");
                        rendererContext.AddOnClickEvent(
                            EventCallback.Factory.Create(this, (MouseEventArgs e) =>
                        {
                            rendererContext.TableDataSet.ToggleGroupRow(group.Key);
                            rendererContext.RequestRerenderNotification?.Invoke();
                        })
                            );
                        rendererContext.OpenElement(HtmlTagNames.Span, "pagination-button-arrow");
                        rendererContext.OpenElement(HtmlTagNames.I, !group.IsCollapsed ? "fas fa-angle-down" : "fas fa-angle-right");
                        rendererContext.CloseElement();
                        rendererContext.CloseElement();
                        rendererContext.CloseElement();
                        rendererContext.AddMarkupContent($"\t<b>{rendererContext.TableDataSet.GroupingOptions.GroupedProperty.Name}:</b> {group.Key.ToString()}\t");
                        rendererContext.OpenElement(HtmlTagNames.I);
                        rendererContext.AddContent($"({group.Count})");
                        rendererContext.CloseElement();


                        if (!group.IsCollapsed)
                        {
                            var dataAdapter        = tableDataAdapterProvider.CreateCollectionTableDataAdapter(rendererContext.TableDataSet.UnderlyingTypeOfItem(), group);
                            var masterTableFeature = rendererContext.FlexGridContext.Features.Get <IMasterTableFeature>();
                            dataAdapter = tableDataAdapterProvider.CreateMasterTableDataAdapter(dataAdapter, masterTableFeature);

                            rendererContext.AddGridViewComponent(dataAdapter);
                        }

                        rendererContext.CloseElement();
                        rendererContext.CloseElement();
                    }
                    catch (Exception ex)
                    {
                        logger.LogError($"Error occured during rendering grouped grid view body. Ex: {ex}");

                        throw ex;
                    }
                }

                rendererContext.CloseElement();
            }
        }
        protected override void BuildRendererTreeInternal(GridRendererContext rendererContext, PermissionContext permissionContext)
        {
            if (rendererContext.TableDataSet.FilterIsApplied)
            {
                rendererContext.OpenElement(HtmlTagNames.TableRow);
                rendererContext.OpenElement(HtmlTagNames.TableColumn);
                rendererContext.AddAttribute(HtmlAttributes.Colspan, rendererContext.NumberOfColumns);
                rendererContext.OpenElement(HtmlTagNames.Div, "table-info-text");
                rendererContext.OpenElement(HtmlTagNames.Span);
                rendererContext.OpenElement(HtmlTagNames.I, "fas fa-search");
                rendererContext.CloseElement();
                rendererContext.CloseElement();
                rendererContext.AddMarkupContent("\t No matching items found");
                rendererContext.CloseElement();
                rendererContext.CloseElement();
                rendererContext.CloseElement();

                return;
            }

            if (!rendererContext.FlexGridContext.FirstPageLoaded)
            {
                rendererContext.OpenElement(HtmlTagNames.Div, "table-info-text table-info-text-small");
                rendererContext.AddContent("Loading...");
                rendererContext.CloseElement();
            }
            else
            {
                rendererContext.OpenElement(HtmlTagNames.TableRow);
                rendererContext.OpenElement(HtmlTagNames.TableColumn);
                rendererContext.AddAttribute(HtmlAttributes.Colspan, rendererContext.NumberOfColumns);
                rendererContext.OpenElement(HtmlTagNames.Div, "table-info-text");
                rendererContext.AddEmptyItemsMessage();
                rendererContext.CloseElement();
                rendererContext.CloseElement();
                rendererContext.CloseElement();
            }
        }