private void RenderDeleteButton(GridRendererContext rendererContext, PermissionContext permissionContext) { if (!permissionContext.HasDeleteItemPermission || !rendererContext.GridConfiguration.InlineEditOptions.AllowDeleting) { return; } var localActualItem = rendererContext.ActualItem; rendererContext.OpenElement(HtmlTagNames.Button, "action-button"); rendererContext.AddOnClickEvent(() => BindMethods.GetEventHandlerValue((UIMouseEventArgs e) => { rendererContext.TableDataSet.DeleteItem(localActualItem); rendererContext.RequestRerenderNotification?.Invoke(); }) ); rendererContext.OpenElement(HtmlTagNames.Span, "action-button-span"); rendererContext.OpenElement(HtmlTagNames.I, "fas fa-trash-alt"); rendererContext.CloseElement(); rendererContext.CloseElement(); rendererContext.CloseElement(); }
protected override void BuildRenderTreeInternal(GridRendererContext rendererContext, PermissionContext permissionContext) { rendererContext.OpenElement(HtmlTagNames.TableRow, rendererContext.CssClasses.TableRow); var localActualItem = rendererContext.ActualItem; rendererContext.AddOnClickEvent(() => BindMethods.GetEventHandlerValue((UIMouseEventArgs e) => { rendererContext.TableDataSet .GridViewEvents .OnItemClicked?.Invoke(new ItemClickedArgs { Item = localActualItem }); })); foreach (var property in rendererContext.GridItemProperties) { rendererContext.ActualColumnName = property.Name; rendererContext.ActualColumnPropertyCanBeEdited = property.CanWrite; gridPartRenderers.ForEach(renderer => renderer.BuildRendererTree(rendererContext, permissionContext)); } rendererContext.CloseElement(); gridPartRenderersAfter.ForEach(renderer => renderer.BuildRendererTree(rendererContext, permissionContext)); }
public override void Render(GridRendererContext rendererContext) { if (!rendererContext.TableDataSet.HasItems()) { return; } var nextButtonIsDisabled = rendererContext.TableDataSet.PageableOptions.IsLastPage; var previousButtonIsDisabled = rendererContext.TableDataSet.PageableOptions.IsFirstPage; rendererContext.OpenElement(HtmlTagNames.Div, "pagination-wrapper"); rendererContext.OpenElement(HtmlTagNames.Div, "pagination-wrapper-inner"); rendererContext.OpenElement(HtmlTagNames.Div, "pagination-right"); rendererContext.CloseElement(); rendererContext.OpenElement(HtmlTagNames.Span, "pagination-page-status"); rendererContext.AddContent($"{rendererContext.TableDataSet.PageInfoText()} of {rendererContext.TableDataSet.PageableOptions.TotalItemsCount}"); rendererContext.CloseElement(); rendererContext.OpenElement(HtmlTagNames.Div, "pagination-buttons-wrapper"); RenderButton(rendererContext, PaginationButtonType.First, previousButtonIsDisabled, "fas fa-angle-double-left"); RenderButton(rendererContext, PaginationButtonType.Previous, previousButtonIsDisabled, "fas fa-angle-left"); RenderButton(rendererContext, PaginationButtonType.Next, nextButtonIsDisabled, "fas fa-angle-right"); RenderButton(rendererContext, PaginationButtonType.Last, nextButtonIsDisabled, "fas fa-angle-double-right"); rendererContext.CloseElement(); rendererContext.CloseElement(); rendererContext.CloseElement(); }
public override void Render(GridRendererContext rendererContext) { stopwatch.Restart(); try { gridPartRenderersBefore.ForEach(renderer => renderer.Render(rendererContext)); rendererContext.OpenElement(HtmlTagNames.Div, "table-wrapper"); rendererContext.OpenElement(HtmlTagNames.Table, rendererContext.CssClasses.Table); gridPartRenderers.ForEach(renderer => renderer.Render(rendererContext)); rendererContext.CloseElement(); // Close table gridPartRenderersAfter.ForEach(renderer => renderer.Render(rendererContext)); rendererContext.CloseElement(); // Close table wrapper stopwatch.Stop(); } catch (Exception ex) { logger.LogError($"Error during rendering GridView component. Ex: {ex}"); } finally { logger.LogInformation($"Rendering time: {stopwatch.ElapsedMilliseconds} ms"); } }
protected override void BuildRenderTreeInternal(GridRendererContext rendererContext, PermissionContext permissionContext) { using (new MeasurableScope(sw => logger.LogInformation($"Grid rendering duration {sw.ElapsedMilliseconds}ms"))) { try { gridPartRenderersBefore.ForEach(renderer => renderer.BuildRendererTree(rendererContext, permissionContext)); rendererContext.OpenElement(HtmlTagNames.Div, "table-wrapper"); rendererContext.OpenElement(HtmlTagNames.Table, rendererContext.CssClasses.Table); gridPartRenderers.ForEach(renderer => renderer.BuildRendererTree(rendererContext, permissionContext)); rendererContext.CloseElement(); // Close table gridPartRenderersAfter.ForEach(renderer => renderer.BuildRendererTree(rendererContext, permissionContext)); rendererContext.CloseElement(); // Close table wrapper } catch (Exception ex) { Console.WriteLine(ex); logger.LogError($"Error raised during rendering GridView component. Ex: {ex}"); } } }
public override void Render(GridRendererContext rendererContext) { if (!rendererContext.TableDataSet.HasItems()) { return; } rendererContext.OpenElement(HtmlTagNames.TableBody, rendererContext.CssClasses.TableBody); try { foreach (var item in rendererContext.TableDataSet.Items) { rendererContext.ActualItem = item; foreach (var renderer in gridPartRenderers) { renderer.Render(rendererContext); } } } catch (Exception ex) { logger.LogError($"Error raised during rendering grid view body. Ex: {ex}"); } rendererContext.CloseElement(); }
private void RenderSortableColumnHeader(GridRendererContext rendererContext, PropertyInfo property, IGridViewColumnAnotations columnConfiguration) { rendererContext.OpenElement(HtmlTagNames.TableHeadCell, rendererContext.CssClasses.TableHeaderCell); rendererContext.OpenElement(HtmlTagNames.Span, rendererContext.SortingByActualColumnName ? "table-cell-head-sortable table-cell-head-sortable-active" : "table-cell-head-sortable"); rendererContext.AddOnClickEvent(() => BindMethods.GetEventHandlerValue(async(UIMouseEventArgs e) => await rendererContext.TableDataSet.SetSortExpression(property.Name)) ); if (rendererContext.SortingByActualColumnName) { var arrowDirection = rendererContext.TableDataSet.SortingOptions.SortDescending ? "fas fa-arrow-down" : "fas fa-arrow-up"; rendererContext.AddContent(GetColumnCaption(columnConfiguration, property)); rendererContext.OpenElement(HtmlTagNames.I, $"table-cell-head-arrow {arrowDirection}"); rendererContext.CloseElement(); } else { rendererContext.AddContent(GetColumnCaption(columnConfiguration, property)); } rendererContext.CloseElement(); rendererContext.CloseElement(); }
protected override void BuildRenderTreeInternal(GridRendererContext rendererContext, PermissionContext permissionContext) { using (new MeasurableScope(sw => logger.LogInformation($"Grid body rendering duration {sw.ElapsedMilliseconds}ms"))) { rendererContext.OpenElement(HtmlTagNames.TableBody, rendererContext.CssClasses.TableBody); try { foreach (var item in rendererContext.TableDataSet.Items) { rendererContext.ActualItem = item; foreach (var renderer in gridPartRenderers) { renderer.BuildRendererTree(rendererContext, permissionContext); } } } catch (Exception ex) { logger.LogError($"Error occured during rendering grid view body. Ex: {ex}"); } rendererContext.CloseElement(); } }
protected override void BuildRendererTreeInternal(GridRendererContext rendererContext, PermissionContext permissionContext) { rendererContext.OpenElement(HtmlTagNames.TableColumn, rendererContext.CssClasses.TableCell); if (!rendererContext.IsActualItemEdited) { rendererContext.AddActualColumnValue(permissionContext); rendererContext.CloseElement(); return; } if (rendererContext.ActualColumnPropertyCanBeEdited && permissionContext.HasCurrentUserWritePermission(rendererContext.ActualColumnName)) { editInputRendererTree.BuildInputRendererTree( rendererContext.RendererTreeBuilder, rendererContext, rendererContext.TableDataSet.EditItemProperty); } else { rendererContext.AddActualColumnValue(permissionContext); } rendererContext.CloseElement(); }
public override void Render(GridRendererContext rendererContext) { if (!rendererContext.TableDataSet.ItemIsSelected(rendererContext.ActualItem) || !rendererContext.GridConfiguration.IsMasterTable || !(rendererContext.TableDataSet is IMasterTableDataSet masterTableDataSet)) { return; } var selectedDataAdapter = masterTableDataSet.GetSelectedDataAdapter(rendererContext.ActualItem); rendererContext.OpenElement(HtmlTagNames.TableRow, rendererContext.CssClasses.TableRow); rendererContext.OpenElement(HtmlTagNames.TableColumn, rendererContext.CssClasses.TableCell); rendererContext.AddColspan(); rendererContext.OpenElement(HtmlTagNames.Div, "tabs-header"); rendererContext.OpenElement(HtmlTagNames.Div, "tabs-header-buttons"); RenderTabs(rendererContext, masterTableDataSet, selectedDataAdapter); rendererContext.CloseElement(); rendererContext.CloseElement(); rendererContext.OpenElement(HtmlTagNames.Div, "tabs-content"); rendererContext.AddDetailGridViewComponent(selectedDataAdapter); rendererContext.CloseElement(); rendererContext.CloseElement(); rendererContext.CloseElement(); }
private void RenderColumnHeader(GridRendererContext rendererContext, PropertyInfo property) { var columnConfiguration = rendererContext.ActualColumnConfiguration; rendererContext.OpenElement(HtmlTagNames.TableHeadCell, rendererContext.CssClasses.TableHeaderCell, GetColumnStyle(columnConfiguration)); rendererContext.OpenElement(HtmlTagNames.Div); rendererContext.AddAttribute(HtmlAttributes.Style, "position: relative;"); if (columnConfiguration == null) { rendererContext.AddContent(GetColumnCaption(columnConfiguration, property)); rendererContext.CloseElement(); rendererContext.CloseElement(); return; } if (columnConfiguration.IsSortable) { RenderSortableColumnHeader(rendererContext, property, columnConfiguration); } else { rendererContext.AddContent(GetColumnCaption(columnConfiguration, property)); } if (columnConfiguration.IsFilterable) { rendererContext.AddFilterComponent(property); } rendererContext.CloseElement(); rendererContext.CloseElement(); }
private void RenderSortableColumnHeader(GridRendererContext rendererContext, PropertyInfo property, IGridViewColumnAnotations columnConfiguration) { rendererContext.OpenElement(HtmlTagNames.Span, rendererContext.SortingByActualColumnName ? "table-cell-head-sortable table-cell-head-sortable-active" : "table-cell-head-sortable"); rendererContext.AddOnClickEvent( EventCallback.Factory.Create(this, async(MouseEventArgs e) => { await rendererContext.TableDataSet.SetSortExpression(property.Name); rendererContext.RequestRerenderNotification?.Invoke(); }) ); if (rendererContext.SortingByActualColumnName) { var arrowDirection = rendererContext.TableDataSet.SortingOptions.SortDescending ? "fas fa-arrow-down" : "fas fa-arrow-up"; rendererContext.AddContent(GetColumnCaption(columnConfiguration, property)); rendererContext.OpenElement(HtmlTagNames.I, $"table-cell-head-arrow {arrowDirection}"); rendererContext.CloseElement(); } else { rendererContext.AddContent(GetColumnCaption(columnConfiguration, property)); } rendererContext.CloseElement(); }
protected override void RenderInternal(GridRendererContext rendererContext, PermissionContext permissionContext) { if (rendererContext.TableDataSet is IMasterTableDataSet masterTableDataSet) { var selectedDataAdapter = masterTableDataSet.GetSelectedDataAdapter(rendererContext.ActualItem); rendererContext.OpenElement(HtmlTagNames.TableRow, rendererContext.CssClasses.TableRow); rendererContext.OpenElement(HtmlTagNames.TableColumn, rendererContext.CssClasses.TableCell); rendererContext.AddColspan(); rendererContext.OpenElement(HtmlTagNames.Div, "tabs-header"); rendererContext.OpenElement(HtmlTagNames.Div, "tabs-header-buttons"); RenderTabs(rendererContext, permissionContext, masterTableDataSet, selectedDataAdapter); rendererContext.CloseElement(); rendererContext.CloseElement(); rendererContext.OpenElement(HtmlTagNames.Div, "tabs-content"); rendererContext.AddDetailGridViewComponent(selectedDataAdapter); rendererContext.CloseElement(); rendererContext.CloseElement(); rendererContext.CloseElement(); } }
protected override void BuildRendererTreeInternal(GridRendererContext rendererContext, PermissionContext permissionContext) { var canRenderCreateItemButton = rendererContext.CreateItemIsAllowed() && permissionContext.HasCreateItemPermission; rendererContext.OpenElement(HtmlTagNames.TableHead, rendererContext.CssClasses.TableHeader); rendererContext.OpenElement(HtmlTagNames.TableRow, rendererContext.CssClasses.TableHeaderRow); if (rendererContext.GridConfiguration.IsMasterTable) { RenderEmptyColumnHeader(rendererContext); } foreach (var property in rendererContext.GridItemProperties) { rendererContext.ActualColumnName = property.Name; RenderColumnHeader(rendererContext, property); } if (canRenderCreateItemButton) { BuildCreateItemButtonRendererTree(rendererContext, permissionContext); } if (rendererContext.InlineEditItemIsAllowed() && !canRenderCreateItemButton) { RenderEmptyColumnHeader(rendererContext); } rendererContext.CloseElement(); rendererContext.CloseElement(); }
private void RenderTab( GridRendererContext rendererContext, IMasterTableDataSet masterTableDataSet, ITableDataAdapter selectedDataAdapter, ITableDataAdapter dataAdapter) { var masterDetailRelationship = rendererContext .GridConfiguration .FindRelationshipConfiguration(dataAdapter.UnderlyingTypeOfItem); var localActualItem = rendererContext.ActualItem; rendererContext.OpenElement(HtmlTagNames.Button, selectedDataAdapter.IsForSameUnderlyingType(dataAdapter) ? "tabs-button tabs-button-active" : "tabs-button"); rendererContext.AddOnClickEvent(() => BindMethods.GetEventHandlerValue((UIMouseEventArgs e) => masterTableDataSet.SelectDataAdapter(new MasterDetailRowArguments(dataAdapter, localActualItem))) ); rendererContext.OpenElement(HtmlTagNames.Span, "tabs-button-text"); rendererContext.AddContent(masterDetailRelationship.DetailGridViewPageCaption(dataAdapter)); rendererContext.CloseElement(); rendererContext.CloseElement(); }
private void RenderDeleteButton(GridRendererContext rendererContext, PermissionContext permissionContext) { if (!permissionContext.HasDeleteItemPermission || !rendererContext.GridConfiguration.InlineEditOptions.AllowDeleting) { return; } var localActualItem = rendererContext.ActualItem; rendererContext.OpenElement(HtmlTagNames.Div, "action-button"); rendererContext.AddOnClickEvent( EventCallback.Factory.Create(this, (MouseEventArgs e) => { if (rendererContext.GridConfiguration.DeleteItemOptions.UseConfirmationDialog) { rendererContext.FlexGridContext.SelectItem(localActualItem); flexGridInterop.ShowModal(DeleteItemOptions.DialogName); } else { rendererContext.TableDataSet.DeleteItem(localActualItem); rendererContext.RequestRerenderNotification?.Invoke(); } }) ); rendererContext.OpenElement(HtmlTagNames.Span, "action-button-span"); rendererContext.OpenElement(HtmlTagNames.I, "fas fa-trash-alt"); rendererContext.CloseElement(); rendererContext.CloseElement(); rendererContext.CloseElement(); }
private void RenderTab( GridRendererContext rendererContext, IMasterTableDataSet masterTableDataSet, ITableDataAdapter selectedDataAdapter, ITableDataAdapter dataAdapter) { var masterDetailRelationship = rendererContext .GridConfiguration .FindRelationshipConfiguration(dataAdapter.UnderlyingTypeOfItem); var localActualItem = rendererContext.ActualItem; rendererContext.OpenElement(HtmlTagNames.Button, selectedDataAdapter.IsForSameUnderlyingType(dataAdapter) ? "tabs-button tabs-button-active" : "tabs-button"); rendererContext.AddOnClickEvent( EventCallback.Factory.Create(this, (MouseEventArgs e) => { masterTableDataSet.SelectDataAdapter(new MasterDetailRowArguments(dataAdapter, localActualItem)); rendererContext.RequestRerenderNotification?.Invoke(); }) ); rendererContext.OpenElement(HtmlTagNames.Span, "tabs-button-text"); rendererContext.AddContent(masterDetailRelationship.DetailGridViewPageCaption(dataAdapter)); rendererContext.CloseElement(); rendererContext.CloseElement(); }
public override void Render(GridRendererContext rendererContext) { rendererContext.OpenElement(HtmlTagNames.TableRow, rendererContext.CssClasses.TableRow); foreach (var property in rendererContext.GridItemProperties) { rendererContext.ActualColumnName = property.Name; gridPartRenderers.ForEach(renderer => renderer.Render(rendererContext)); } rendererContext.CloseElement(); // Temporary this is only for tesing if (rendererContext.TableDataSet.ItemIsSelected(rendererContext.ActualItem)) { rendererContext.OpenElement(HtmlTagNames.TableRow, rendererContext.CssClasses.TableRow); rendererContext.OpenElement(HtmlTagNames.TableColumn, rendererContext.CssClasses.TableCell); rendererContext.AddColspan(); rendererContext.AddGridViewComponent( (rendererContext.TableDataSet as IMasterTableDataSet)?.DetailDataAdapters.First()); rendererContext.CloseElement(); rendererContext.CloseElement(); } }
private void RenderTabs( GridRendererContext rendererContext, PermissionContext permissionContext, IMasterTableDataSet masterTableDataSet, ITableDataAdapter selectedDataAdapter) { foreach (var dataAdapter in masterTableDataSet.DetailDataAdapters) { RenderTab(rendererContext, masterTableDataSet, selectedDataAdapter, dataAdapter); } if (rendererContext.ShowExplicitDetailTables()) { return; } foreach (var collectionProperty in rendererContext.GridItemCollectionProperties) { if (permissionContext.HasCurrentUserReadPermission(collectionProperty.Name)) { var dataAdapter = _tableDataAdapterProvider.CreateCollectionTableDataAdapter(rendererContext.ActualItem, collectionProperty); RenderTab(rendererContext, masterTableDataSet, selectedDataAdapter, dataAdapter); } } }
protected override void BuildRendererTreeInternal(GridRendererContext rendererContext, PermissionContext permissionContext) { var nextButtonIsDisabled = rendererContext.TableDataSet.PageableOptions.IsLastPage; var previousButtonIsDisabled = rendererContext.TableDataSet.PageableOptions.IsFirstPage; //rendererContext.OpenElement(HtmlTagNames.Div, "pagination-wrapper"); rendererContext.OpenElement(HtmlTagNames.Div, rendererContext.CssClasses.FooterCssClasses.FooterWrapper); if (rendererContext.TableDataSet.GroupingOptions.IsGroupingEnabled) { RenderGroupingFooterPart(rendererContext); } rendererContext.OpenElement(HtmlTagNames.Div, "pagination-right"); rendererContext.CloseElement(); rendererContext.OpenElement(HtmlTagNames.Span, "pagination-page-status"); rendererContext.AddContent($"{rendererContext.TableDataSet.PageInfoText()} of {rendererContext.TableDataSet.PageableOptions.TotalItemsCount}"); rendererContext.CloseElement(); rendererContext.OpenElement(HtmlTagNames.Div, "pagination-buttons-wrapper"); RenderButton(rendererContext, PaginationButtonType.First, previousButtonIsDisabled, "fas fa-angle-double-left"); RenderButton(rendererContext, PaginationButtonType.Previous, previousButtonIsDisabled, "fas fa-angle-left"); RenderButton(rendererContext, PaginationButtonType.Next, nextButtonIsDisabled, "fas fa-angle-right"); RenderButton(rendererContext, PaginationButtonType.Last, nextButtonIsDisabled, "fas fa-angle-double-right"); rendererContext.CloseElement(); rendererContext.CloseElement(); //rendererContext.CloseElement(); }
protected override void RenderInternal(GridRendererContext rendererContext, PermissionContext permissionContext) { stopwatch.Restart(); gridPartRenderer.Render(rendererContext, permissionContext); logger.LogInformation($"Rendering time [{gridPartRenderer.GetType().FullName}]: {stopwatch.ElapsedMilliseconds} ms"); }
public void Render(GridRendererContext rendererContext, PermissionContext permissionContext) { if (!CanRender(rendererContext)) { return; } RenderInternal(rendererContext, permissionContext); }
public void BuildRendererTree(GridRendererContext rendererContext, PermissionContext permissionContext) { if (!CanRender(rendererContext)) { return; } BuildRenderTreeInternal(rendererContext, permissionContext); }
public override void Render(GridRendererContext rendererContext) { stopwatch.Restart(); gridPartRenderer.Render(rendererContext); stopwatch.Stop(); logger.LogInformation($"Rendering time [{gridPartRenderer.GetType().FullName}]: {stopwatch.ElapsedMilliseconds} ms"); }
private void RenderGroupingFooterPart(GridRendererContext rendererContext) { rendererContext.OpenElement(HtmlTagNames.Div, rendererContext.CssClasses.FooterCssClasses.GroupingPartWrapper); rendererContext.OpenElement(HtmlTagNames.Select); rendererContext.AddAttribute(HtmlAttributes.Id, groupingSelectId); rendererContext.AddOnChangeEvent(() => BindMethods.GetEventHandlerValue(async(UIChangeEventArgs e) => { string propertyName = e.Value.ToString(); if (propertyName == noGroupingOptionText) { rendererContext.TableDataSet.GroupingOptions.DeactivateGrouping(); } else { rendererContext.TableDataSet.GroupingOptions.SetGroupedProperty(propertyName); } await rendererContext.TableDataSet.GoToPage(0); rendererContext.RequestRerenderNotification?.Invoke(); }) ); if (!rendererContext.TableDataSet.GroupingOptions.IsGroupingActive) { rendererContext.OpenElement(HtmlTagNames.Option); rendererContext.AddAttribute(HtmlAttributes.Disabled, true); rendererContext.AddContent(groupByPlaceholder); rendererContext.CloseElement(); } else { rendererContext.OpenElement(HtmlTagNames.Option); rendererContext.AddAttribute(HtmlAttributes.Value, string.Empty); rendererContext.AddContent(noGroupingOptionText); rendererContext.CloseElement(); } foreach (var groupableProperty in rendererContext.TableDataSet.GroupingOptions.GroupableProperties) { rendererContext.OpenElement(HtmlTagNames.Option); if (groupableProperty == rendererContext.TableDataSet.GroupingOptions.GroupedProperty) { rendererContext.AddAttribute(HtmlAttributes.Selected, true); } rendererContext.AddAttribute(HtmlAttributes.Value, groupableProperty.Name); rendererContext.ActualColumnName = groupableProperty.Name; var displayedGroupablePropertyName = rendererContext.ActualColumnConfiguration?.Caption ?? groupableProperty.Name; rendererContext.AddContent(displayedGroupablePropertyName); rendererContext.CloseElement(); } rendererContext.CloseElement(); rendererContext.CloseElement(); }
private Task GetPaginationTask(GridRendererContext rendererContext, PaginationButtonType paginationButtonType) => paginationButtonType == PaginationButtonType.Previous ? rendererContext.TableDataSet.GoToPreviousPage() : paginationButtonType == PaginationButtonType.Next ? rendererContext.TableDataSet.GoToNextPage() : paginationButtonType == PaginationButtonType.First ? rendererContext.TableDataSet.GoToFirstPage() : rendererContext.TableDataSet.GoToLastPage();
private void RenderGroupingFooterPart(GridRendererContext rendererContext) { rendererContext.OpenElement(HtmlTagNames.Div, rendererContext.CssClasses.FooterCssClasses.GroupingPartWrapper); rendererContext.OpenElement(HtmlTagNames.Select, "group-select"); rendererContext.AddAttribute(HtmlAttributes.Id, GroupingSelectId); rendererContext.AddOnChangeEvent(() => BindMethods.GetEventHandlerValue(async(UIChangeEventArgs e) => { rendererContext.TableDataSet.GroupingOptions.SetGroupedProperty(e.Value.ToString()); await rendererContext.TableDataSet.GoToPage(0); rendererContext.RequestRerenderNotification?.Invoke(); }) ); if (!rendererContext.TableDataSet.GroupingOptions.IsGroupingActive) { rendererContext.OpenElement(HtmlTagNames.Option); rendererContext.AddAttribute(HtmlAttributes.Disabled, true); rendererContext.AddContent(GroupByPlaceholder); rendererContext.CloseElement(); } foreach (var groupableProperty in rendererContext.TableDataSet.GroupingOptions.GroupableProperties) { rendererContext.OpenElement(HtmlTagNames.Option); if (groupableProperty == rendererContext.TableDataSet.GroupingOptions.GroupedProperty) { rendererContext.AddAttribute(HtmlAttributes.Selected, true); } rendererContext.AddAttribute(HtmlAttributes.Value, groupableProperty.Name); rendererContext.AddContent(rendererContext.GetColumnCaption(groupableProperty.Name) ?? groupableProperty.Name); rendererContext.CloseElement(); } rendererContext.CloseElement(); rendererContext.CloseElement(); if (rendererContext.TableDataSet.GroupingOptions.IsGroupingActive) { rendererContext.OpenElement(HtmlTagNames.Button, "action-button"); rendererContext.AddOnClickEvent(() => BindMethods.GetEventHandlerValue((UIMouseEventArgs e) => { rendererContext.TableDataSet.GroupingOptions.DeactivateGrouping(); rendererContext.RequestRerenderNotification?.Invoke(); }) ); rendererContext.OpenElement(HtmlTagNames.Span, "action-button-span"); rendererContext.OpenElement(HtmlTagNames.I, "fas fa-times"); rendererContext.CloseElement(); rendererContext.CloseElement(); rendererContext.CloseElement(); } }
private void RenderGroupingFooterPart(GridRendererContext rendererContext) { rendererContext.OpenElement(HtmlTagNames.Div, rendererContext.CssClasses.FooterCssClasses.GroupingPartWrapper); rendererContext.OpenElement(HtmlTagNames.Select, "group-select"); rendererContext.AddAttribute(HtmlAttributes.Id, GroupingSelectId); rendererContext.AddAttribute(HtmlJsEvents.OnChange, EventCallback.Factory.Create(this, async(ChangeEventArgs e) => { rendererContext.TableDataSet.GroupingOptions.SetGroupedProperty(BindConverterExtensions.ConvertTo(e.Value, string.Empty)); await rendererContext.TableDataSet.GoToPage(0); rendererContext.RequestRerenderNotification?.Invoke(); }) ); if (!rendererContext.TableDataSet.GroupingOptions.IsGroupingActive) { rendererContext.OpenElement(HtmlTagNames.Option); rendererContext.AddAttribute(HtmlAttributes.Disabled, true); rendererContext.AddContent(GroupByPlaceholder); rendererContext.CloseElement(); } foreach (var groupableProperty in rendererContext.TableDataSet.GroupingOptions.GroupableProperties) { rendererContext.OpenElement(HtmlTagNames.Option); if (groupableProperty == rendererContext.TableDataSet.GroupingOptions.GroupedProperty) { rendererContext.AddAttribute(HtmlAttributes.Selected, true); } rendererContext.AddAttribute(HtmlAttributes.Value, groupableProperty.Name); rendererContext.AddContent(rendererContext.GetColumnCaption(groupableProperty.Name) ?? groupableProperty.Name); rendererContext.CloseElement(); } rendererContext.CloseElement(); rendererContext.CloseElement(); if (rendererContext.TableDataSet.GroupingOptions.IsGroupingActive) { rendererContext.OpenElement(HtmlTagNames.Button, "action-button"); rendererContext.AddOnClickEvent( EventCallback.Factory.Create(this, (MouseEventArgs e) => { rendererContext.TableDataSet.GroupingOptions.DeactivateGrouping(); rendererContext.RequestRerenderNotification?.Invoke(); }) ); rendererContext.OpenElement(HtmlTagNames.Span, "action-button-span"); rendererContext.OpenElement(HtmlTagNames.I, "fas fa-times"); rendererContext.CloseElement(); rendererContext.CloseElement(); rendererContext.CloseElement(); } }
protected override void BuildRendererTreeInternal(GridRendererContext rendererContext, PermissionContext permissionContext) { rendererContext.AddContent(" "); rendererContext.OpenElement("p"); rendererContext.OpenElement("em"); rendererContext.AddContent("Loading..."); rendererContext.CloseElement(); rendererContext.CloseElement(); rendererContext.AddContent("\n"); }
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(); } }