Is the ChartSeriesStyle.Smooth property supposed to work on Area chart as well?
seems like it's working on a line chart only for me
Hi,
I'm using Blazor for UI 3.1.0 with a TelerikGrid. I want to implement a custom background color for certain rows in the grid.
As a test I started with setting up a style for the row and attaching a OnRowRender event:
<style>
.PriorPeriodAdjustedRowFormatting {
background-color: orange;
}
.ApprovalForPaymentRowFormatting {
background-color: lightgreen;
}
</style>
<TelerikGrid Data="@TransactionsGridData" EditMode="@GridEditMode.Popup" Height="450px"
Pageable="true" PageSize="20" Sortable="false" Groupable="true"
FilterMode="Telerik.Blazor.GridFilterMode.FilterMenu"
Resizable="true" Class="smallerFont" Reorderable="true"
SelectionMode="@GridSelectionMode.Multiple" SelectedItems="@SelectedTransactions" SelectedItemsChanged="@((IEnumerable<MixedTransactions> list) => OnTransactionsSelected(list))"
OnStateInit="@((GridStateEventArgs<MixedTransactions> args) => OnStateInitHandler(args))"
OnRowRender="@OnTransactionsRowRender">... then in the OnTransactionsRowRender event I just forced every row to match one of the styles as a test, like so:
void OnTransactionsRowRender(GridRowRenderEventArgs args)
{
args.Class = "PriorPeriodAdjustedRowFormatting";
}This should turn the background color on every row orange but it doesn't, it only turns half of them orange:
If I repeat the same test but ask for the color to be orange (instead of the background color) it turns all the text orange. So for example if the style is this:
<style>
.PriorPeriodAdjustedRowFormatting {
color: orange;
}
.ApprovalForPaymentRowFormatting {
background-color: lightgreen;
}
</style>then it does color the text in each row orange:
It looks like the alternating row style is overwriting any custom settings for the background-color in OnRowRender but it respects the custom settings for color. Can it be fixed so it applies properly when set via OnRowRender?
1. I need to add a center label to my Donut Chart
2. make the percentage label always visible (not only on mouseover)
How can I achieve this?

Hi,
I'm using UI for Blazor version 3.1.0. I have a grid with multi-row selection turned on that triggers an OnEmployeesSelected event when the selected items change. I also have a GridCheckboxColumn as well. The code looks like so:
<TelerikGrid Data="@EmployeeGridData" EditMode="@GridEditMode.Popup" Height="240px"
Pageable="true" PageSize="20" Sortable="true" Groupable="false"
FilterMode="Telerik.Blazor.GridFilterMode.FilterMenu"
Resizable="true" Class="smallerFont" Reorderable="true"
SelectionMode="@GridSelectionMode.Multiple" SelectedItems="@SelectedEmployees" SelectedItemsChanged="@((IEnumerable<EmployeeList> list) => OnEmployeesSelected(list))">
<GridColumns>
<GridCheckboxColumn SelectAll="true" SelectAllMode="GridSelectAllMode.All">The issue is the @SelectedEmployees variable holding the selected items for the grid gets out of sync with what it displayed. Part of that may be due to this behavior:
hello,
I have a grid as a parent component and within it there is a TelerikWindow - child of the grid.
Within the TelerikWindow I've nested a component as WindowContent. This component should take as a paramenter one of the model's properties (which is a list of line items).
How do I pass this parameter from the grid to the component nested in the Telerik Window?
Please see the grid and window below:
<TelerikTileLayout Columns="1"
ColumnWidth="100%"
RowHeight="85vh"
Resizable="false"
Reorderable="false">
<TileLayoutItems>
<TileLayoutItem HeaderText="Global Invoice Schedules" Class="tile-with-overflow">
<Content>
@if(selectInvoicesNotificationMessage != null)
{
<div style="margin-bottom:18px;" class="general-validation-message">@selectInvoicesNotificationMessage</div>
}
<TelerikLoaderContainer LoaderType="LoaderType.Pulsing" OverlayThemeColor="light" Visible="@(invLoadingStatus == DataLoadStatus.Loading ? true: false)"></TelerikLoaderContainer>
@if(invLoadingStatus == DataLoadStatus.LoadedSuccessfully)
{
<TelerikGrid Data="@Invoices"
Sortable="true"
Resizable="true"
ScrollMode="GridScrollMode.Scrollable"
Height=100%
@bind-SelectedItems="SelectedInvoices"
SelectionMode="@GridSelectionMode.Multiple"
>
<GridToolBar>
<GridCommandButton Class="k-action-buttons" Command="SetInvoicesToReady" OnClick="(()=>SetToReady(true))"><span class="check-button"><TelerikIcon Icon="check"/></span>Ready</GridCommandButton>
<GridCommandButton Class="k-action-buttons" Command="SetInvoicesToReady" OnClick="(()=>SetToReady(false))"><span class="x-button"><TelerikIcon Icon="x"/></span>Not Ready</GridCommandButton>
</GridToolBar>
<GridColumns>
<GridCheckboxColumn />
<GridColumn Field="@(nameof(GlobalInvoiceSchedule_Invoice.Ready))" Width="70px" Title="Ready">
<Template>
@{
var icon = (context as GlobalInvoiceSchedule_Invoice).Ready ? "check" : "x";
<div style="text-align: center;" class=@icon>
<TelerikIcon Icon=@icon/>
</div>
}
</Template>
</GridColumn>
<GridColumn Field="@(nameof(GlobalInvoiceSchedule_Invoice.ScheduledDate))" DisplayFormat="{0:dd/MM/yyyy}" Width="230px" Title="Scheduled Date" />
<GridColumn Field="@(nameof(GlobalInvoiceSchedule_Invoice.ClientName))" Width="230px" Title="Client Name" />
<GridColumn Field="@(nameof(GlobalInvoiceSchedule_Invoice.BillingProfile))" Width="230px" Title="Billing Profile" />
<GridColumn Field="@(nameof(GlobalInvoiceSchedule_Invoice.InvoiceType))" Width="230px" Title="Invoice Type" />
<GridColumn Field="@(nameof(GlobalInvoiceSchedule_Invoice.Gross))" Width="230px" Title="Gross" />
<GridCommandColumn Width="172px">
<GridCommandButton OnClick="OpenInvoiceLineItems" Icon="search">Line Items</GridCommandButton>
</GridCommandColumn>
</GridColumns>
</TelerikGrid>
}
else if(invLoadingStatus == DataLoadStatus.LoadFailed)
{
<p>Data could not be loaded, if the problem persists please report the issue to the system administrator</p>
}
</Content>
</TileLayoutItem>
</TileLayoutItems>
</TelerikTileLayout>
</div>
<TelerikNotification @ref="@EventNotifier" Class="hlxNotification"></TelerikNotification>
<TelerikWindow Class="hlxModal" Width="600px" Height="555px" Centered="true" @bind-Visible=@modalIsVisible Modal="true">
<WindowTitle>
<strong>Invoice Line Items</strong>
</WindowTitle>
<WindowActions>
<WindowAction Name="Close" />
</WindowActions>
<WindowContent>
<GlobalSchedule_LineItems InvoiceLineItems= />
</WindowContent>
</TelerikWindow>
The component nested in the windwo is <GlobalSchedule_LineItems /> and the paramenter is InvoiceLineItems. This paramenter should be a list of line itmes belonging to each of the rows of the grid.
I have tried:
InvoiceLineItems="(context as GlobalInvoiceSchedule_Invoice).InvoiceLineItems" -- not working (obviously)
InvoiceLineItems="GlobalInvoiceSchedule_Invoice.InvoiceLineItems" -- object reference is required (obviously)
Thank you.
Kind regards
Hi,
I had to update to .net 6.0.3. The Fileuploader don't work anymore. I can choose a file from the OS-Select Popup, but then nothing happens. The popup closes, no preview (the row with icon, filename, progress) and no error-message and no upload. The same in Firefox and Edge.
Attached is the screen shot which shows both Color palette and Color picker in the cell template of the grid. How can I set the Color picker width similar to the Color palette. I have tried setting the class of the Color picker to be width 100 % or fit-content or stretch. But none of them seem to be working.
Attached image file marks the color picker in red and color palette in blue. The color picker should have width similiar to the palatte.
Below is the code and css style.
<GridColumn Field="Color" Title="Color" Width="100px" TextAlign="ColumnTextAlign.Center" FieldType="@(typeof(string))" >
<Template>
@{
@colorUpdate.ColorCode;
<TelerikColorPicker @bind-Value="colorUpdate.ColorCode" ValueFormat="ColorFormat.Hex" Class="k-colorpicker" >
<ColorPickerViews>
<ColorPickerGradientView ShowOpacityEditor="false" Format="ColorFormat.Hex">
</ColorPickerGradientView>
</ColorPickerViews>
</TelerikColorPicker>
<TelerikColorPalette Colors="@ColorList" TileHeight="25px" TileWidth="25px" >
</TelerikColorPalette>
}
</Template>
</GridColumn>.k-colorpicker {
width: stretch; /*tried using 100% or fit-content */
}
.k-colorpicker .k-selected-color {
width: stretch; /*tried using 100% or fit-content */
}
span.k-colorpicker{
width: stretch; /*tried using 100% or fit-content */
}
Thank you for your help.
Beena.

Hi I would like to build a dark mode toggle like the one on use on Dark Mode - Tailwind CSS
Have been looking at the documentation for the content menu and the "normal" menu.
I can see that you can use a template but can I build a template that's accept svg?
Any plans on implementing headless-ui for blazor? I really like the concept.
Could use Bootstrap dropdown, but again why use another framework?
Hi, I am trying to modify the existing code for the Hierarchical Drawer so I can have a nested nav menu in the drawer. Right now, when I add a level 2 child to a level 1 child, the level 2 child is not aligned properly; it is in line with the first original level when it should be indented. How can I fix this?
@inject IFacilityService FacilityService
@inject ILocationService LocationService
<div class="custom-toolbar">
<TelerikButton OnClick="@ToggleDrawer" Icon="menu" FillMode="@(ThemeConstants.Button.FillMode.Flat)"></TelerikButton>
<span style="margin-left: 20px; font-weight: bold; font-size: 17px;">Wilder Fields Sensor Dashboard</span>
</div>
<TelerikDrawer @ref="@Drawer" Data="Data" MiniMode="false" Mode="@DrawerMode.Push" TItem="DrawerItem" SelectedItemChanged="@OnItemSelect" @bind-Expanded="@Expanded">
<Template>
<div class="k-drawer-items" role="menubar" aria-orientation="vertical">
<LoginDisplay />
<ul>
@foreach (var item in context)
{
var selectedClass = item == SelectedItem ? "k-state-selected" : string.Empty;
<li @onclick="@(() => OnItemSelect(item))" class="k-drawer-item @selectedClass">
<div class="k-level-@(item.Level)">
<TelerikIcon Icon="@item.Icon"></TelerikIcon>
<span class="k-item-text">@item.Text</span>
</div>
@if (item.Expanded && (item.Children?.Any() ?? false))
{
<span class="k-icon k-i-arrow-chevron-down" style="position:absolute; right:0; line-height: inherit; margin: 0 8px"></span>
}
else if (!item.Expanded && (item.Children?.Any() ?? false))
{
<span class="k-icon k-i-arrow-chevron-right" style="position:absolute; right:0; line-height: inherit; margin: 0 8px"></span>
}
</li>
}
</ul>
</div>
</Template>
<DrawerContent>
@SelectedItem?.Description
</DrawerContent>
</TelerikDrawer>
<!--- <NotAuthorized>
<a href="authentication/login">Log in</a>
</NotAuthorized>-->
@code {
protected override async Task OnParametersSetAsync()
{
await base.OnParametersSetAsync();
}
public TelerikDrawer<DrawerItem> Drawer { get; set; }
public DrawerItem SelectedItem { get; set; }
public bool Expanded { get; set; } = true;
public IEnumerable<DrawerItem> Data { get; set; } =
new List<DrawerItem>
{
new DrawerItem { Text = "R2D2", Icon = "question",
Children = new List<DrawerItem>()
{
new DrawerItem { Text = "Room 1", Icon = "grid", Level = 1,
Children = new List<DrawerItem>()
{
new DrawerItem { Text = "Room 1", Icon = "grid", Level = 2 },
new DrawerItem { Text = "Calendar", Icon = "calendar-date", Level = 2, Description = "The Calendar component allows the user to scroll through a calendar and select one or more dates. " },
new DrawerItem { Text = "Menu", Icon = "menu", Level = 2, Description = "The Menu component displays data (flat or hierarchical) in a traditional menu-like structure." },
}
},
}
},
new DrawerItem {
Text = "Components",
Icon = "categorize",
Description = "Blazor is still a new technology and the component suite is young. We are constantly working on adding new features and components. Tell us which components you want implemented and how you intend to use them, and Blazor, at our feedback portal.",
Children = new List<DrawerItem>()
{
new DrawerItem { Text = "Room 1", Icon = "grid", Level = 1, Description = "The Telerik Blazor Data Grid provides a comprehensive set of ready-to-use features covering everything from paging, sorting, filtering, editing, and grouping to row virtualization, optimized data reading, keyboard navigation and accessibility support." },
new DrawerItem { Text = "Calendar", Icon = "calendar-date", Level = 1, Description = "The Calendar component allows the user to scroll through a calendar and select one or more dates. " },
new DrawerItem { Text = "Menu", Icon = "menu", Level = 1, Description = "The Menu component displays data (flat or hierarchical) in a traditional menu-like structure." },
}
},
new DrawerItem { Text = "Browser Support", Icon = "calendar", Description = "Browsers supported by Telerik UI for Blazor: Chrome (including Android and iOS), Edge, Firefox, Safari (including iOS)" }
};
public async Task ToggleDrawer() => await Drawer.ToggleAsync();
protected override void OnInitialized()
{
SelectedItem = Data.First();
}
public void OnItemSelect(DrawerItem selectedItem)
{
SelectedItem = selectedItem;
selectedItem.Expanded = !selectedItem.Expanded;
var newData = new List<DrawerItem>();
foreach (var item in Data.Where(x => x.Level <= selectedItem.Level))
{
newData.Add(item);
if (item == selectedItem && selectedItem.Expanded && (item.Children?.Any() ?? false))
{
foreach (var child in item.Children)
{
newData.Add(child);
}
}
if (item != selectedItem && !(item.Children?.Contains(selectedItem) ?? false))
{
item.Expanded = false;
}
}
Data = newData;
}
public class DrawerItem
{
public string Text { get; set; }
public string Icon { get; set; }
public bool Expanded { get; set; }
public int Level { get; set; }
public string Description { get; set; }
public IEnumerable<DrawerItem> Children { get; set; }
}
}
<style>
#demo-runner {
height: 600px;
}
.k-drawer-content {
padding: 25px;
font-size: 18px;
}
.k-drawer-container {
position: relative;
width: 100%;
height: 95%;
}
.k-drawer .k-drawer-item {
white-space: nowrap;
overflow: hidden;
}
.k-level-1 {
padding-left: 20px;
}
.custom-toolbar {
width: 100%;
background-color: #f6f6f6;
line-height: 10px;
border-bottom: inset;
border-bottom-width: 1px;
padding: 3px 8px;
color: #656565;
}
</style>