зеркало из https://github.com/telerik/blazor-docs.git
Added new kb article grid-dynamically-adjusting-column-header-styles (#2523)
* Added new kb article grid-dynamically-adjusting-column-header-styles * Update knowledge-base/grid-dynamically-adjusting-column-header-styles.md Co-authored-by: Iva Stefanova Koevska-Atanasova <koevska@progress.com> * docs(Grid): Add example and update after review * Update knowledge-base/grid-dynamically-adjusting-column-header-styles.md Co-authored-by: Dimo Dimov <961014+dimodi@users.noreply.github.com> * Update knowledge-base/grid-dynamically-adjusting-column-header-styles.md Co-authored-by: Dimo Dimov <961014+dimodi@users.noreply.github.com> * Update knowledge-base/grid-dynamically-adjusting-column-header-styles.md Co-authored-by: Dimo Dimov <961014+dimodi@users.noreply.github.com> * Update knowledge-base/grid-dynamically-adjusting-column-header-styles.md Co-authored-by: Dimo Dimov <961014+dimodi@users.noreply.github.com> * Update knowledge-base/grid-dynamically-adjusting-column-header-styles.md Co-authored-by: Dimo Dimov <961014+dimodi@users.noreply.github.com> * Update knowledge-base/grid-dynamically-adjusting-column-header-styles.md Co-authored-by: Dimo Dimov <961014+dimodi@users.noreply.github.com> * Update knowledge-base/grid-dynamically-adjusting-column-header-styles.md Co-authored-by: Dimo Dimov <961014+dimodi@users.noreply.github.com> * Update knowledge-base/grid-dynamically-adjusting-column-header-styles.md Co-authored-by: Dimo Dimov <961014+dimodi@users.noreply.github.com> * docs(Grid): update KB example after review --------- Co-authored-by: KB Bot <kb-bot@telerik.com> Co-authored-by: NansiYancheva <106161782+NansiYancheva@users.noreply.github.com> Co-authored-by: Iva Stefanova Koevska-Atanasova <koevska@progress.com> Co-authored-by: NansiYancheva <nansi.qncheva@abv.bg> Co-authored-by: Dimo Dimov <961014+dimodi@users.noreply.github.com>
This commit is contained in:
Родитель
1d837a54e6
Коммит
b0ad6f319c
|
@ -0,0 +1,134 @@
|
|||
---
|
||||
title: Adjust Grid Column Header Styles Dynamically
|
||||
description: Learn how to dynamically change the style of a column header cell in a Telerik Blazor Grid based on condition.
|
||||
type: how-to
|
||||
page_title: How to Style Column Header Cells Dynamically in a Telerik Blazor Grid
|
||||
slug: grid-dynamically-adjusting-column-header-styles
|
||||
tags: grid, blazor, headerclass
|
||||
res_type: kb
|
||||
ticketid: 1670074
|
||||
---
|
||||
|
||||
## Environment
|
||||
|
||||
<table>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>Product</td>
|
||||
<td>Grid for Blazor, <br /> TreeList for Blazor</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
## Description
|
||||
|
||||
I am dynamically creating Grid columns in a loop and trying to adjust the column header cell style based on some condition and value from the [column field]({%slug components/grid/columns/bound%}#data-binding). Ideally, I want to implement logic to make this adjustment based on the value in the header cell. I have not been able to achieve this in the `HeaderTemplate` tag or in any of the cell render events handlers. In other templates, I have access to the `@context` field, which would make this easy, but that doesn't seem to work in the `HeaderTemplate`.
|
||||
|
||||
## Solution
|
||||
|
||||
To style a column header cell when dynamically creating columns in a loop, use the [`HeaderClass` parameter]({%slug components/grid/columns/bound%}#appearance) to set a CSS class under a condition and apply different styles depending on the class. For scenarios with numerous and more complex conditions, you can create a method to determine the appropriate class.
|
||||
|
||||
Note that the [`HeaderTemplate`]({%slug grid-templates-column-header%}) does not receive a context argument because it is not related to rows and models, as outlined in the [Templates Overview]({%slug components/grid/features/templates%}) of the Telerik UI for Blazor documentation.
|
||||
|
||||
### Example
|
||||
|
||||
````CSHTML
|
||||
<TelerikGrid Data="@GridData">
|
||||
<GridColumns>
|
||||
<GridColumn Field="@nameof(Product.Name)" Title="Product Name" />
|
||||
@for (int i = 0; i <= MaxYears; i++)
|
||||
{
|
||||
<GridColumn @key="@i" Field="@( $"StartYear{i}" )" Title=@( $"{StartYear + i}" ) DisplayFormat="{0:N}" HeaderClass="@GetHeaderClass(StartYear + i)" />
|
||||
}
|
||||
</GridColumns>
|
||||
</TelerikGrid>
|
||||
|
||||
<style>
|
||||
.past-year-column {
|
||||
background-color: yellow;
|
||||
}
|
||||
|
||||
.previous-year-column {
|
||||
background-color: royalblue;
|
||||
}
|
||||
|
||||
.current-year-column {
|
||||
background-color: pink;
|
||||
}
|
||||
|
||||
.future-year-column {
|
||||
background-color: red;
|
||||
}
|
||||
</style>
|
||||
|
||||
|
||||
@code {
|
||||
private List<Product> GridData { get; set; } = new();
|
||||
private const int MaxYears = 10;
|
||||
private const int StartYear = 2020;
|
||||
private int currYear { get; set; } = DateTime.Now.Year;
|
||||
|
||||
private string GetHeaderClass(int year)
|
||||
{
|
||||
if (year <= StartYear)
|
||||
return "past-year-column";
|
||||
else if (year < currYear)
|
||||
return "previous-year-column";
|
||||
else if (year == currYear)
|
||||
return "current-year-column";
|
||||
else
|
||||
return "future-year-column";
|
||||
}
|
||||
|
||||
protected override void OnInitialized()
|
||||
{
|
||||
GridData = new List<Product>();
|
||||
|
||||
for (int i = 1; i <= 20; i++)
|
||||
{
|
||||
GridData.Add(new Product
|
||||
{
|
||||
Id = i,
|
||||
Name = "Product name " + i,
|
||||
StartYear0 = Random.Shared.Next(100, 9999),
|
||||
StartYear1 = Random.Shared.Next(100, 9999),
|
||||
StartYear2 = Random.Shared.Next(100, 9999),
|
||||
StartYear3 = Random.Shared.Next(100, 9999),
|
||||
StartYear4 = Random.Shared.Next(100, 9999),
|
||||
StartYear5 = Random.Shared.Next(100, 9999),
|
||||
StartYear6 = Random.Shared.Next(100, 9999),
|
||||
StartYear7 = Random.Shared.Next(100, 9999),
|
||||
StartYear8 = Random.Shared.Next(100, 9999),
|
||||
StartYear9 = Random.Shared.Next(100, 9999),
|
||||
StartYear10 = Random.Shared.Next(100, 9999)
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
base.OnInitialized();
|
||||
}
|
||||
|
||||
public class Product
|
||||
{
|
||||
public int Id { get; set; }
|
||||
public string Name { get; set; }
|
||||
public double? StartYear0 { get; set; }
|
||||
public double? StartYear1 { get; set; }
|
||||
public double? StartYear2 { get; set; }
|
||||
public double? StartYear3 { get; set; }
|
||||
public double? StartYear4 { get; set; }
|
||||
public double? StartYear5 { get; set; }
|
||||
public double? StartYear6 { get; set; }
|
||||
public double? StartYear7 { get; set; }
|
||||
public double? StartYear8 { get; set; }
|
||||
public double? StartYear9 { get; set; }
|
||||
public double? StartYear10 { get; set; }
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## See Also
|
||||
|
||||
- [Grid HeaderClass Parameter]({%slug components/grid/columns/bound%}#appearance)
|
||||
- [Grid Column Header Template]({%slug grid-templates-column-header%})
|
||||
- [Templates Overview - Telerik UI for Blazor]({%slug components/grid/features/templates%})
|
Загрузка…
Ссылка в новой задаче