Back to Devexpress

DxGridSummaryItem.Visible Property

blazor-devexpress-dot-blazor-dot-dxgridsummaryitem-e21c2f1a.md

latest8.7 KB
Original Source

DxGridSummaryItem.Visible Property

Specifies whether a summary item is visible.

Namespace : DevExpress.Blazor

Assembly : DevExpress.Blazor.v25.2.dll

NuGet Package : DevExpress.Blazor

Declaration

csharp
[DefaultValue(true)]
[Parameter]
public bool Visible { get; set; }

Property Value

TypeDefaultDescription
Booleantrue

true if the summary item is visible; otherwise, false.

|

Remarks

Use this property to show or hide individual summary items in code.

If you set an item’s Visible property to false, this item is removed from the GridDataColumnGroupRowTemplateContext.SummaryItems collection.

The following code snippet uses the Visible property to hide default group summaries and displays these summaries in group row tooltips instead.

razor
@implements IDisposable
    @inject NwindDataService NwindDataService

        <DxGrid @ref="Grid"
                Data="@Data"
                ShowGroupPanel="true"
                CustomizeElement="Grid_CustomizeElement"
                SizeMode="Params.SizeMode"
                ColumnResizeMode="GridColumnResizeMode.NextColumn" 
                TextWrapEnabled="false"
                VirtualScrollingEnabled="true">
            <Columns>
                <DxGridDataColumn FieldName="CompanyName" MinWidth="100" />
                <DxGridDataColumn FieldName="City" Width="10%" />
                <DxGridDataColumn FieldName="Region" Width="10%" />
                <DxGridDataColumn FieldName="Country" Name="Country" Width="10%" GroupIndex="0" />
                <DxGridDataColumn FieldName="UnitPrice" DisplayFormat="c" Width="10%" />
                <DxGridDataColumn FieldName="Quantity" MinWidth="80" Width="10%" />
                <DxGridDataColumn FieldName="Total"
                                  Name="Total"
                                  UnboundType="GridUnboundColumnType.Decimal"
                                  UnboundExpression="[UnitPrice] * [Quantity]"
                                  DisplayFormat="c"
                                  MinWidth="100"
                                  Width="15%" />
            </Columns>
            <GroupSummary>
                <DxGridSummaryItem SummaryType="GridSummaryItemType.Count" FieldName="Country" Visible="false" />
                <DxGridSummaryItem SummaryType="GridSummaryItemType.Sum" FieldName="Total" Visible="false" />
            </GroupSummary>
        </DxGrid>
@code {
    object Data { get; set; }
    IGrid Grid { get; set; }
    readonly TaskCompletionSource<bool> dataLoadedTcs = new(TaskCreationOptions.RunContinuationsAsynchronously);

    protected override async Task OnInitializedAsync() {
        var invoices = await NwindDataService.GetInvoicesAsync();
        var customers = await NwindDataService.GetCustomersAsync();
        Data = invoices.OrderBy(i => i.OrderDate).Join(customers, i => i.CustomerId, c => c.CustomerId, (i, c) => {
            return new {
                CompanyName = c.CompanyName,
                City = i.City,
                Region = i.Region,
                Country = i.Country,
                UnitPrice = i.UnitPrice,
                Quantity = i.Quantity
            };
        });
        dataLoadedTcs.TrySetResult(true);
    }
    protected override async Task OnAfterRenderAsync(bool firstRender) {
        if(firstRender) {
            await dataLoadedTcs.Task;
            Grid.ExpandGroupRow(1);
        }
    }
    void Grid_CustomizeElement(GridCustomizeElementEventArgs e) {
        if(e.ElementType == GridElementType.DataRow && (System.Decimal)e.Grid.GetRowValue(e.VisibleIndex, "Total") > 1000) {
            e.CssClass = "highlighted-item";
        }
        if(e.ElementType == GridElementType.DataCell && e.Column.Name == "Total") {
            e.CssClass = "fw-800";
        }
        if(e.ElementType == GridElementType.GroupRow && e.Column.Name == "Country") {
            var summaryItems = e.Grid.GetGroupSummaryItems().Select(i => e.Grid.GetGroupSummaryDisplayText(i, e.VisibleIndex));
            e.Attributes["title"] = string.Join(", ", summaryItems);
        }
    }
    public void Dispose() {
        dataLoadedTcs.TrySetCanceled();
    }
}
csharp
using System;
using System.Collections.Generic;

#nullable disable

namespace Grid.Northwind {
    public partial class OrderDetail {
        public int OrderId { get; set; }
        public int ProductId { get; set; }
        public decimal UnitPrice { get; set; }
        public short Quantity { get; set; }
        public float Discount { get; set; }

        public virtual Order Order { get; set; }
        public virtual Product Product { get; set; }
    }
}
csharp
using Microsoft.EntityFrameworkCore;
#nullable disable

namespace Grid.Northwind {
    public partial class NorthwindContext : DbContext {

        public NorthwindContext(DbContextOptions<NorthwindContext> options)
            : base(options) {
        }
        // ...
        public virtual DbSet<OrderDetail> OrderDetails { get; set; }
        // ...
        protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) {
            if(!optionsBuilder.IsConfigured) {
                optionsBuilder.UseSqlServer("Server=.\\sqlexpress;Database=Northwind;Integrated Security=true");
            }
        }

        protected override void OnModelCreating(ModelBuilder modelBuilder) {
            modelBuilder.HasAnnotation("Relational:Collation", "SQL_Latin1_General_CP1_CI_AS");
            // ...
            modelBuilder.Entity<OrderDetail>(entity => {
                entity.HasKey(e => new { e.OrderId, e.ProductId })
                    .HasName("PK_Order_Details");
                entity.ToTable("Order Details");
                entity.HasIndex(e => e.OrderId, "OrderID");
                entity.HasIndex(e => e.OrderId, "OrdersOrder_Details");
                entity.HasIndex(e => e.ProductId, "ProductID");
                entity.HasIndex(e => e.ProductId, "ProductsOrder_Details");
                entity.Property(e => e.OrderId).HasColumnName("OrderID");
                entity.Property(e => e.ProductId).HasColumnName("ProductID");
                entity.Property(e => e.Quantity).HasDefaultValueSql("((1))");
                entity.Property(e => e.UnitPrice).HasColumnType("money");
                entity.HasOne(d => d.Order)
                    .WithMany(p => p.OrderDetails)
                    .HasForeignKey(d => d.OrderId)
                    .OnDelete(DeleteBehavior.ClientSetNull)
                    .HasConstraintName("FK_Order_Details_Orders");
                entity.HasOne(d => d.Product)
                    .WithMany(p => p.OrderDetails)
                    .HasForeignKey(d => d.ProductId)
                    .OnDelete(DeleteBehavior.ClientSetNull)
                    .HasConstraintName("FK_Order_Details_Products");
            });
            // ...
            OnModelCreatingPartial(modelBuilder);
        }

        partial void OnModelCreatingPartial(ModelBuilder modelBuilder);
    }
}
csharp
using Microsoft.EntityFrameworkCore;
// ...
builder.Services.AddDbContextFactory<NorthwindContext>((sp, options) => {
    var env = sp.GetRequiredService<IWebHostEnvironment>();
    var dbPath = Path.Combine(env.ContentRootPath, "Northwind-5e44b51f.mdf");
    options.UseSqlServer("Server=(localdb)\\MSSQLLocalDB;Integrated Security=true;AttachDbFileName=" + dbPath);
});
razor
.dxbl-grid {
    height: 522px;
}
.highlighted-item > td {
    background-color: var(--dxds-color-surface-danger-subdued-rest);
}

.highlighted-item > td:first-child {
    background-color: transparent;
}
.grid-container {
    display: contents;
}

Run Demo: Grid - Conditional Formatting

For additional information about summaries in the Grid component, refer to the following topic: Summary in Blazor Grid.

Implements

Visible

See Also

DxGridSummaryItem Class

DxGridSummaryItem Members

DevExpress.Blazor Namespace