[!Note] Please note that this control has been deprecated and replaced with the Grid, and as such, we recommend migrating to that control. This will not be receiving any new features, bug fixes will be deprioritized. For help or questions on migrating your codebase to the Data Grid, please contact support.

    Visão geral da grade de dados do Blazor

    A Tabela de Dados/Grade de Dados Ignite UI for Blazor é um componente de grade de Blazor tabular que permite vincular e exibir rapidamente seus dados com pouca codificação ou configuração. Os recursos da grade de dados Blazor incluem filtragem, classificação, modelos, seleção de linhas, agrupamento de linhas, fixação de linhas e colunas móveis. As tabelas Blazor são otimizadas para dados de streaming ao vivo, com a capacidade de lidar com tamanho de conjunto de dados ilimitado em número de linhas ou colunas.

    Blazor Data Grid Example

    Esta demonstração implementa alguns dos recursos disponíveis na Grade: Filtragem, Agrupamento, Fixar/Desfixar colunas, Reposicionar colunas, Classificação e Resumos

    Getting Started

    Dependencies

    Consulte estes tópicos sobre como adicionar o pacote IgniteUI.Blazor.

    Depois, você pode começar a implementar o controle adicionando os seguintes namespaces:

    @using IgniteUI.Blazor.Controls
    

    Component Modules

    O IgbGrid requer os seguintes módulos:

    // in Program.cs file
    
    builder.Services.AddIgniteUIBlazor(typeof(IgbDataGridModule));
    

    Optional Modules

    Os recursos opcionais IgbGrid, vistos acima, requerem os seguintes módulos:

    // in Program.cs file
    
    builder.Services.AddIgniteUIBlazor(
        typeof(IgbDataGridModule),
        typeof(IgbDataGridToolbarModule),
        typeof(IgbSparklineModule)
    );
    

    Sample Data Source

    Agora que o módulo de grade de dados Blazor foi importado, a seguir está a configuração básica da grade de Blazor que se vincula aos dados locais.

    @code {
    
        public List<SaleInfo> DataSource { get; set;}
        Random Rand = new Random();
    
        protected override void OnInitialized()
        {
            GenerateData();
        }
    
        public void GenerateData()
        {
            string[] names = new string[] {
                "Intel CPU", "AMD CPU",
                "Intel Motherboard", "AMD Motherboard", "Nvidia Motherboard",
                "Nvidia GPU", "Gigabyte GPU", "Asus GPU", "AMD GPU", "MSI GPU",
                "Corsair Memory", "Patriot Memory", "Skill Memory",
                "Samsung HDD", "WD HDD", "Seagate HDD", "Intel HDD", "Asus HDD",
                "Samsung SSD", "WD SSD", "Seagate SSD", "Intel SSD", "Asus SSD",
                "Samsung Monitor", "Asus Monitor", "LG Monitor", "HP Monitor" };
    
            string[] countries = new string[] {
                "USA", "UK", "France", "Canada", "Poland",
                "Denmark", "Croatia", "Australia", "Seychelles",
                "Sweden", "Germany", "Japan", "Ireland",
                "Barbados", "Jamaica", "Cuba", "Spain", };
            string[] status = new string[] { "Packing", "Shipped", "Delivered" };
    
            var sales = new List<SaleInfo>();
    
            for (var i = 0; i < 200; i++)
            {
                var price = GetRandomNumber(10000, 90000) / 100;
                var items = GetRandomNumber(4, 30);
                var value = Math.Round(price * items);
                var margin = GetRandomNumber(2, 5);
                var profit = Math.Round((price * margin / 100) * items);
                var country = GetRandomItem(countries);
    
                var item = new SaleInfo()
                {
                    Country = country,
                    CountryFlag = GetCountryFlag(country),
                    Margin = margin,
                    OrderDate = GetRandomDate(),
                    OrderItems = items,
                    OrderValue = value,
                    ProductID = 1001 + i,
                    ProductName = GetRandomItem(names),
                    ProductPrice = price,
                    Profit = Math.Round(profit),
                    Status = GetRandomItem(status)
                };
                sales.Add(item);
            }
    
            this.DataSource = sales;
        }
    
        public double GetRandomNumber(double min, double max)
        {
            return Math.Round(min + (Rand.NextDouble() * (max - min)));
        }
    
        public string GetRandomItem(string[] array)
        {
            var index = (int)Math.Round(GetRandomNumber(0, array.Length - 1));
            return array[index];
        }
    
        public DateTime GetRandomDate() {
            var today = new DateTime();
            var year = today.Year;
            var month = this.GetRandomNumber(1, 9);
            var day = this.GetRandomNumber(10, 27);
            return new DateTime(year, (int)month, (int)day);
        }
    
        public string GetCountryFlag(string country)
        {
            var flag = "https://static.infragistics.com/xplatform/images/flags/" + country + ".png";
            return flag;
        }
    
        public class SaleInfo
        {
            public string? Status { get; set; }
            public string? ProductName { get; set; }
            public string? CountryFlag { get; set; }
            public string? Country { get; set; }
            public DateTime OrderDate { get; set; }
            public double Profit { get; set; }
            public double ProductPrice { get; set; }
            public double ProductID { get; set; }
            public double OrderValue { get; set; }
            public double OrderItems { get; set; }
            public double Margin { get; set; }
        }
    }
    

    Auto-Generate Columns

    O código a seguir demonstra como associar a grade de dados Blazor aos dados locais acima.

     <IgbDataGrid Height="100%"
        Width="100%"
        DataSource="DataSource"
        AutoGenerateColumns="true"
        DefaultColumnMinWidth="100"
        SummaryScope="SummaryScope.Root"
        IsColumnOptionsEnabled="true"
        IsGroupCollapsable="true"
        GroupSummaryDisplayMode="GroupSummaryDisplayMode.RowBottom"
        ColumnMovingMode="ColumnMovingMode.Deferred"
        ColumnMovingAnimationMode="ColumnMovingAnimationMode.SlideOver"
        ColumnMovingSeparatorWidth="2"
        ColumnShowingAnimationMode="ColumnShowingAnimationMode.SlideFromRightAndFadeIn"
        ColumnHidingAnimationMode="ColumnHidingAnimationMode.SlideToRightAndFadeOut"
        SelectionMode="GridSelectionMode.SingleRow"
        CornerRadiusTopLeft="0"
        CornerRadiusTopRight="0" />
    

    Manually Define Columns

    <IgbDataGrid Height="100%"
        Width="100%"
        DataSource="DataSource"
        AutoGenerateColumns="false">
        <IgbNumericColumn Field="ProductID" HeaderText="Product ID" />
        <IgbTextColumn Field="ProductName" HeaderText="Product Name" />
        <IgbTextColumn Field="QuantityPerUnit" HeaderText="Quantity Per Unit" />
        <IgbNumericColumn Field="UnitsInStock" HeaderText="Units In Stock" />
        <IgbDateTimeColumn Field="OrderDate" HeaderText="Order Date" />
    </IgbDataGrid>
    

    Styling Columns

    O código a seguir demonstra como estilizar colunas específicas usando as propriedades da coluna fornecida.

    <IgbTextColumn
        Background="SkyBlue"
        FontStyle="italic"
        FontWeight="bold"
        FontFamily="Times New Roman"
        FontSize="16"
    />
    

    Tutorial Video

    Saiba mais sobre como criar uma grade de dados Blazor em nosso breve vídeo tutorial:

    Additional Resources

    API References