Component: RadFilter ( RadFilterExpressionConverter , RadFilterExpressionSerializer )
Affected: 2026.2.708 and later, where the JSON serializer replaced the Newtonsoft one
Description:
RadFilterExpressionConverter.IsValidFieldName ( RadFilterExpressionConverter.cs:180 ) allows only letters, digits, _ and . . Any other FieldName is silently replaced with null during LoadSettings() . SaveSettings() does not validate, so a bracket-qualified name saves but can't be loaded.
Steps to reproduce
1. Create a RadFilter with a RadFilterTextFieldEditor where FieldName = "[dataBooking].[TotalPaid]" .
2. Add a RadFilterLessThanFilterExpression<string> on that field with the value "1000" .
3. Call SaveSettings() . The JSON contains "FieldName":"[dataBooking].[TotalPaid]" .
4. On a new RadFilter with the same editor, call LoadSettings(saved) .
Sample console application code snippet to reproduce the issue:
using System;
using System.Collections;
using Telerik.Web.UI;
namespace RadFilterBracketFieldNameRepro
{
class Program
{
private const string BracketedFieldName = "[dataBooking].[TotalPaid]";
static void Main()
{
Console.WriteLine("Telerik.Web.UI version: " + typeof(RadFilter).Assembly.GetName().Version);
Console.WriteLine("FieldName under test: " + BracketedFieldName);
Console.WriteLine();
// 1) Build a filter with one expression against a bracket-qualified field name.
// This format is not unusual -- it's what you get for any field name that needs
// to be schema/table-qualified. Telerik's own RadFilterSqlExpressionEvaluator
// produces the same "[table].[column]" shape when generating SQL.
RadFilter source = new RadFilter();
source.FieldEditors.Add(new RadFilterTextFieldEditor { FieldName = BracketedFieldName });
RadFilterLessThanFilterExpression<string> expression = new RadFilterLessThanFilterExpression<string>(BracketedFieldName);
((IRadFilterValueExpression)expression).SetValues(new ArrayList { "1000" });
source.RootGroup.AddExpression(expression);
// 2) Persist it the normal way.
string savedState = source.SaveSettings();
Console.WriteLine("SaveSettings() output (base64):");
Console.WriteLine(savedState);
Console.WriteLine();
Console.WriteLine("Decoded JSON:");
Console.WriteLine(System.Text.Encoding.UTF8.GetString(Convert.FromBase64String(savedState)));
Console.WriteLine();
// 3) Simulate the next request restoring that saved state into a fresh RadFilter,
// exactly like a report/page reload would.
RadFilter restored = new RadFilter();
restored.FieldEditors.Add(new RadFilterTextFieldEditor { FieldName = BracketedFieldName });
try
{
restored.LoadSettings(savedState);
RadFilterLessThanFilterExpression<string> restoredExpression = (RadFilterLessThanFilterExpression<string>)restored.RootGroup.Expressions[0];
Console.WriteLine("FieldName after LoadSettings(): '" + restoredExpression.FieldName + "'");
Console.WriteLine(restoredExpression.FieldName == BracketedFieldName
? "OK -- FieldName round-tripped correctly."
: "BUG REPRODUCED -- FieldName was lost during LoadSettings().");
}
catch (Exception ex)
{
Console.WriteLine("BUG REPRODUCED -- LoadSettings() threw:");
Console.WriteLine(ex);
}
Console.WriteLine();
Console.WriteLine("Press Enter to exit...");
Console.ReadLine();
}
}
}
Expected: The expression is restored with its original FieldName.
Actual:
System.ArgumentException: Parameter cannot be null or empty. Parameter name: fieldName RadFilterDataFieldEditorCollection.FindEditorForFieldName RadFilterSingleExpressionItem.SetupFunctionInterface RadFilter.CreateFilterItems / CreateChildControls RadFilter.RecreateControl RadFilter.LoadSettings
Context / scenario
We run a large ASP.NET AJAX application with a fully custom, self-maintained CSS theme — we do not use any of Telerik's built-in skins. For this kind of setup we need complete control over every stylesheet that gets loaded into the page, both for consistency of our design system and to avoid unexpected CSS side effects or class-name collisions with resources we don't manage.
Issue
We found that fonticons.css is automatically and unconditionally injected by the Lightweight rendering path used by the controls (e.g. RadButton, RadTextBox, and other controls using the Lightweight render mode). This injection happens regardless of the EnableEmbeddedSkins and EnableEmbeddedBaseStylesheet settings, which normally let developers opt out of Telerik's embedded/base CSS resources. In other words, even with both of those settings disabled and no skin applied, fonticons.css is still loaded — there is currently no supported way to prevent it.
We raised this with Telerik support and it was confirmed internally: the fonticons.css injection is currently hard-wired into the Lightweight rendering path and is not gated by any existing configuration option.
Why this matters
EnableEmbeddedSkins / EnableEmbeddedBaseStylesheet = "nothing gets injected automatically" for teams running a fully custom theme.Feature request
Introduce a supported opt-out for the automatic fonticons.css injection in the Lightweight rendering path — for example, a new setting such as EnableFontIcons (page/control or global web.config level, consistent with how EnableEmbeddedSkins / EnableEmbeddedBaseStylesheet are already exposed) that lets developers explicitly disable this injection when they provide their own icon/font handling.
We understand from Telerik support that this is not a small, isolated change — it requires auditing and refactoring how style resources are declared and loaded across the whole control set (including some legacy resource-registration code) before a dedicated opt-out setting can be safely introduced, and that this carries a real risk of regressions if rushed. We're not expecting a quick fix; we're submitting this as a tracked feature request, as recommended by Telerik support, so it can be prioritized and voted on by other customers with the same fully-custom-theme use case.
Suggested acceptance criteria
fonticons.css injection specifically in Lightweight rendering mode.EnableEmbeddedSkins / EnableEmbeddedBaseStylesheet: when disabled, no font-icon CSS is emitted by the framework, leaving the developer fully responsible for providing equivalent styles if needed.------------------- AI Summary -------------------
We upgraded Telerik UI for ASP.NET AJAX from version 2026.2.708 to 2026.3.812, with no changes to our navigation menu code. Our RadPanelBar menu is populated server-side via DataBind() using a SiteMapDataSource (no client-side population). Since the upgrade, clicking a menu item frequently does not navigate to its URL: the menu shifts vertically, the clicked item is not selected, and no navigation occurs. This is impacting customers’ ability to use our site.
--------------- End of AI Summary ---------------
We are requesting assistance to troubleshoot and resolve this issue as quickly as possible. This problem is causing significant usability issues.
RadPivotGrid persisted states do not restore saved filter values or apply the filters to the dataset.
The issue is reproducible on the Telerik demo site and also affects states newly saved with the affected versions. No runtime errors are observed.
The behavior worked in 2026.2.519.
Expected: Loading a persisted state restores the saved filters and applies them to the PivotGrid.
Actual: The state loads, but the saved filters are not restored or applied.
This appears to be a regression related to recent changes to the persisted state storage/restoration mechanism.
verified still present in 2026.2.519 — RadCalendarScript.js
When `EnableNavigationAnimation` is enabled (the default) and the browser zoom is not 100% (and Windows uses fractional display scaling such as 125%/150%),
navigating the RadCalendar to the NEXT month removes the day grid and never renders the new one. The calendar title updates, but the view area stays empty permanently.
Because `_enableNavigation(false)` and `EnableDateSelect = false` are set before the animation and only restored when it completes, the calendar is also left with navigation
and date selection disabled — the control is dead until the page is reloaded.
Navigating BACKWARD works correctly (see root cause below for why), which is a useful way to confirm this specific bug.
End users hit this routinely because Chrome persists per-site zoom and many laptops default to 125%/150% display scaling.
Steps to reproduce:
1. Page with a default RadCalendar:
<telerik:RadCalendar ID="RadCalendar1" runat="server" EnableNavigationAnimation="true" /> 2. Open in Chrome, set zoom to 110% (Ctrl and +), reload.
3. Click the "next month" arrow (repeat at a couple of zoom levels, e.g. 110%,
125%, 150% — whether a given level triggers it depends on rounding of the
calendar's rendered width).
c = function () {
o > 0 && r.scrollLeft + r.offsetWidth < r.scrollWidth ||
o < 0 && r.scrollLeft > 0
? (r.scrollLeft += 10 * o, window.setTimeout(c, 10))
: d(); // d() re-attaches the new table and re-enables the control
};`Element.scrollLeft` is a fractional double, while `offsetWidth`/`scrollWidth` are rounded integers. At zoom levels other than 100%, `scrollLeft` clamps at a fractional maximum (e.g. 219.4545) while the rounded widths suggest an integer maximum (e.g. 220 with scrollWidth 440). The forward-direction termination
check `scrollLeft + offsetWidth < scrollWidth` (439.45 < 440) then remains true forever: `scrollLeft += 10` is clamped and makes no further progress, so the loop reschedules itself indefinitely and `d()` is never called. The new view table is never appended, and navigation/date selection are never re-enabled.
The backward direction terminates on `scrollLeft > 0`, and `scrollLeft` clamps to exactly 0 — which is why only forward navigation is affected.
When the Grid is groupped and showing/hiding columns on client-side, the table layout is broken. More specifically, the cell's colspan does not get adjusted when another cell gets hidden.
To replicate the problem:
Hello,
add LastModified column to the RadFileExplorer default control. developing a custom handler seems a bit excessive IMHO to view this important information.
Thanks,
emil
Hi,
Would it possible to build in a text search filter into a Listbox?
Re: https://www.telerik.com/account/support-center/view-ticket/1677442
Re: https://www.telerik.com/products/aspnet-ajax/documentation/knowledge-base/listbox-client-side-filter
Alan
Hi,
I was looking around to develop a web app that allows streaming camera view in order to take pictures, showing the previews, letting cancel/retake or transfer (upload/save) them.
I started from the input control, that makes more or less what I need, but start a video streaming, letting the user simply to capture frame from it to save pictures, is more user friendly and simplify a lot the workflow.
So I started to work with video element, canvas and FloatingActionsButton, hitting against many issues, starting from the different browsers compatibilities.
I was just wondering if Telerik would never implement such a camera + gallery component, in order to take and manage pictures easily and cross platform.
Thank you, kind regards
Yes, ASP.NET Webforms is outdated, but it's still around, and I think many developers are looking at moving to a newer and more modern technology. But in some cases - including mine - it's not really possible to refactor an application that has grown for 20 years overnight. The only thing I can do is put a lot of energy into changing the CSS of the controls. Which is not always easy.
I really appreciate the functionality of the Telerik controls and think it's a shame that they don't get a visual and functional update.
In this specific case, it is about the Datepicker Control, which has a different behavior than the more modern version under .NET Core. For example, the month or year selection opens in a new DIV popup. In the more modern control, this is solved in a more elegant and modern way.
I think that this list of controls that need a “front-end pimp” can certainly be extended.
Thank you!
Based on Ticket ID 1683806 it was suggested to add this here. It should be fairly straight forward and would resolve issues that I have.
My Suggestion:
Why can you not just add the clientEvents to the RadEditor1.FileExplorerSettings
Something like RadEditor1.FileExplorerSettings.ClientEvents.OnClientFileOpen="somefunction"
Your response.
Thank you for your suggestion to add client events directly to RadEditor1.FileExplorerSettings. It's a thoughtful idea that could indeed enhance client-side flexibility and streamline interactions.
At present, this feature is not available. However, we encourage you to submit it as a feature request through our public feedback portal, where our product team actively reviews community input for potential inclusion in future updates.
Also, please see my ticket for a bug in the ImageManager using th URL to return the item instead of the OriginalPath. This makes my custom content provider not feasible.
Thanks!