Completed
Last Updated: 04 Nov 2026 12:05 by ADMIN
Release 2026 Q4
A property to handle that would be very convenient. This way developers could be able to restrict the number of rows that the user can type. Something like MaxRowNumber.

Additionally, a property MaxColumnNumber would be also useful to restrict the length of each row. 
Completed
Last Updated: 04 Nov 2026 12:04 by ADMIN
Release 2026 Q4

Regression introduced in: 2025.4.1111

When RadEditor is in HTML mode, calling get_html() without parameters modifies self-closing tags in the returned content.

According to the documented API behavior, the RadEditor client filters should modify the returned content only when the isFiltered argument is set to true. However, the content is currently passed through browser DOM serialization even when filtering is not requested. This normalizes HTML void elements and removes the XHTML self-closing slash.

Steps to reproduce

  1. Add a RadEditor to a page.
  2. Switch the editor to HTML mode.
  3. Enter the following content:
<img alt="" src="image.png" />
  1. Call editor.get_html() or editor.get_html(false).

Actual result

The returned markup is modified and the self-closing slash is removed:

<img alt="" src="image.png">

Expected result

When filtering is not requested, the content entered in HTML mode should be returned without filter-related DOM serialization:

<img alt="" src="image.png" />

Calling editor.get_html(true) may modify the returned content according to the enabled RadEditor client filters.

Impact

Applications that store, compare, validate, or further process XHTML-compatible markup may receive content different from the source entered by the user. This can affect integrations that rely on self-closing tag syntax.

Completed
Last Updated: 04 Nov 2026 12:04 by ADMIN
Release 2026 Q4

The RadEditor Add Link dialog uses HTML tables for layout, but the tables are exposed with data-table semantics.

The dialog contains:

  • An outer reControlsLayout table
  • A nested reConfirmCancelButtonsTblLight table for the action buttons
  • Hidden <caption>, <thead>, and <th> elements intended to describe the tables
  • No role="presentation" or role="none" on the layout tables

Because these tables are used to arrange form fields and buttons rather than display tabular data, screen readers and automated accessibility tools may interpret them as data tables. The hidden headers are removed from the accessibility tree and do not provide useful table semantics. The nested table may also result in redundant or confusing table announcements.

This causes WCAG 2.1 accessibility findings related to table semantics, including F49 and F91 under Section 508.

Completed
Last Updated: 04 Nov 2026 12:03 by ADMIN
Release 2026 Q4

Hi!

I use .resx file to change Gantt labels with italian translation.

Everything works as expected with the exception of the assign resources button in advanced form (see attachment).

I tried to set declaratively with the Localization-AdvancedAssignResources property but it doesn't work.

Thanks in advance.

Mattia

Completed
Last Updated: 04 Nov 2026 07:39 by ADMIN
Release 2026 Q4
Created by: Floris
Comments: 0
Category: Grid
Type: Bug Report
4

RadGrid’s SEO Paging activates for normal users in the latest Brave browser, because sessions are misclassified as crawlers (Request.Browser.Crawler evaluates to true).

Even with PagerStyle.EnableSEOPaging set to False, SEO paging still turns on due to crawler detection, and ask whether the legacy Request.Browser.Crawler approach should be removed for ASP.NET WebForms in Telerik.

When EnableSEOPaging is True, query string paging is always used, but when False, the grid still enables SEO paging upon crawler detection, which is being incorrectly triggered in Brave.

Under Review
Last Updated: 02 Nov 2026 08:35 by ADMIN

Smart Paste Component is adding ALL controls on the page to the FormFields Json sent to the LLM, not just those with the SmartPasteDescription populated.      This is causing the JSON to balloon as the user accesses more tabs on the page that have more controls.  

Eventually this causes the LLM to run out of context size and stop functioning.     

Please either fix this, or add a flag to disable auto discovery and allow us to just manually add the fields only.

 

To Recreate...   have a page with   a few telerik controls and  a rad tab strip.       Do a smart paste request.   
Next click on the other tabs with more fields.   Do another smart paste request.    Those new fields are also added. 

NONE of these fields have smart paste description  fields. 

Completed
Last Updated: 29 Oct 2026 14:31 by ADMIN

There is a bug with combining scripts and resources:

Combined CDN Request for Telerik Controls

You can reproduce the issue in the attached web site sample.

Completed
Last Updated: 26 Oct 2026 09:26 by ADMIN
Release 2026 Q3 SP1
Created by: Sitecore IT
Comments: 0
Category: UI for ASP.NET AJAX
Type: Bug Report
0
Telerik's embedded jQuery bootstrap code was changed so that it now unconditionally reassigns window.$ (and window.jQuery) whenever window.jQuery is undefined, with no check on whether window.$ is already occupied by another library (e.g. Prototype.js, MooTools, or any framework that defines a global $ without defining a global jQuery). This directly reproduces the reported symptom (element.dispatchEvent is not a function inside Prototype's fire()).
Unplanned
Last Updated: 26 Oct 2026 08:41 by Christopher

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
Reproduced on the current version 2026.3.608.0.

Completed
Last Updated: 21 Oct 2026 14:04 by ADMIN
Release 2026 Q3 SP1
Having the properites MarkFirstMatch="true" and Filter="StartsWith" causes false behaviour. When some text is entered in the input of the ComboBox, the first match is marked. If Tab key is pressed on the keyboard the entered text remains in the input with no item selected.

			
Completed
Last Updated: 21 Oct 2026 12:50 by ADMIN
Release 2026 Q3 SP1
1. Go to http://demos.telerik.com/aspnet-ajax/treeview/examples/functionality/contextmenu/defaultcs.aspx

2. Tap and hold on a node to invoke RadContextMenu.

Expected - RadContextMenu appearsActual - RadContextMenu does not appear, browsers' native context menu appears instead

			
Completed
Last Updated: 21 Oct 2026 10:21 by ADMIN
Release 2026 Q3 SP1
RadRibbonBar RibbonBarMenu (disabled) DisabledImageUrlLarge:

- When initially loading page the image is the correct one - the one set using the DisabledImageUrlLarge property;

- When the RibbonBar widow is re-sized (when it is made larger), if there is a RibbonBarGroup to the left of the RibbonBarMenu in question, the items of which become from medium to large, the RibbonBarMenu DisabledImageUrlLarge is changed to default.

			
Completed
Last Updated: 21 Oct 2026 07:55 by ADMIN
Release 2026 Q3 SP1
Completed
Last Updated: 21 Oct 2026 07:40 by ADMIN
Release 2026 Q3 SP1
The current page FileList items are not properly updated when the paging is enabled. Returning to a previously paged folder is properly restored to page 1, but it keeps showing the content of lastly listed page. The issue is reproducible in all explorer modes of the control.

Video - http://screencast.com/t/KVpgADxanuh
Completed
Last Updated: 20 Oct 2026 14:21 by ADMIN
Release 2026 Q3 SP1

1. Click the ComboBox

2. Select an item in its dropdown

3. Expected: no exception on selection, actual: A "Selection out of range" exception is thrown.

using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Telerik.Web.UI;

public partial class ComboBoxNavigation : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            
        }
    }

    private DataTable CreateTestTable()
    {
        DataTable table = new DataTable();
        table.Columns.Add("Text");
        table.Columns.Add("Value");
        table.Columns.Add("test");
        table.Rows.Add("Item1", "1", "aaa");
        table.Rows.Add("Item1", "1", "aaa");
        table.Rows.Add("Item1", "1", "aaa");
      
        return table;
    }

    protected void rcbStaff_ItemsRequested(object sender, RadComboBoxItemsRequestedEventArgs e)
    {

        RadComboBox rcbUser = sender as RadComboBox;
        rcbUser.DataSource = CreateTestTable();
        rcbUser.DataTextField = "Text";
        rcbUser.DataValueField = "Value";
        rcbUser.DataBind();

    }

    protected void rcbStaff_SelectedIndexChanged(object sender, RadComboBoxSelectedIndexChangedEventArgs e)
    {

    }
}

            <telerik:RadNavigation ID="RadNavigation1" runat="server">
                <Nodes>
                    <telerik:NavigationNode Text="Home"  />
                    <telerik:NavigationNode Text="Candidate"  />
                    <telerik:NavigationNode Text="Preliminary Candidate"  />
                    <telerik:NavigationNode Text="StaffSearch" CssClass="staffSearchWrapper rootTemplate">
                        <NodeTemplate>
                            <telerik:RadComboBox ID="rcbStaff" 
                                AutoPostBack="true" 
                                runat="server"
                                EnableLoadOnDemand="True" 
                                OnItemsRequested="rcbStaff_ItemsRequested"
                                OnSelectedIndexChanged="rcbStaff_SelectedIndexChanged"
                               >
                            </telerik:RadComboBox>
                        </NodeTemplate>
                    </telerik:NavigationNode>
                </Nodes>
            </telerik:RadNavigation>


			
Completed
Last Updated: 20 Oct 2026 13:12 by ADMIN
Release 2026 Q3 SP1
ADMIN
Created by: Peter Milchev
Comments: 2
Category: Scheduler
Type: Bug Report
1

			
Completed
Last Updated: 19 Oct 2026 14:25 by ADMIN
Release 2026 Q3 SP1
ADMIN
Created by: Ianko
Comments: 2
Category: UI for ASP.NET AJAX
Type: Bug Report
1
There are missing methods in the TypeScript definitions provided. 

You can find attached a file that illustrates what needs to be updated.
Completed
Last Updated: 19 Oct 2026 13:10 by ADMIN
Release 2026 Q3 SP1
A workaround is to remove the loading sign functionality by placing the following script at the end of the form tag

The second override is necessary only if you use the OnClientDataLoaded event to alter the data and add fields in the data object that do not exist in the server response. You need to rename the OnClientDataLoaded method call to use your actual method name.

You can find an example of both workarounds and their usage attached.

Some additional information:
- If possible, move the tiles out of the AJAX request, as this will eliminate all of the problems. Depending on the actual scenario perhaps you can make sure they are not in an update panel (e.g., position them absolutely on the page while keeping their markup out of the partial postback).
- consider moving any data formatting logic from the event handler to the template. You can define functions that format the code in the template, not only in the event. An example is available in the attached file. Alternatively, you can return the data formatted from the web service.
- consider reducing the time interval for the requests, because after the AJAX request, only 1 of 2 requests will update the tile UI.
Completed
Last Updated: 19 Oct 2026 10:50 by ADMIN
Release 2026 Q3 SP1

In lightweight the issue is not observed:

<telerik:RadRibbonBar runat="server" RenderMode="Classic">
    <Tabs>
        <telerik:RibbonBarTab Text="home">
            <%-- duplicate the group and items inside to replicate more easily --%>
            <telerik:RibbonBarGroup Text="Documents">
                <Items>
                    <telerik:RibbonBarButton Text="Item 1" />
                </Items>
            </telerik:RibbonBarGroup>
        </telerik:RibbonBarTab>
    </Tabs>
</telerik:RadRibbonBar>

Completed
Last Updated: 16 Oct 2026 14:02 by ADMIN
Release 2026 Q3 SP1
ADMIN
Created by: Vessy
Comments: 2
Category: Editor
Type: Bug Report
0
The Delete and Backspace buttons remain enabled in spell check mode, allowing the client to delete selections inside the Editor's content area.

Steps to reproduce:
1. Open http://demos.telerik.com/aspnet-ajax/editor/examples/spellchecker/defaultcs.aspx
2. Click the Spell check icon
3. Select several words from the content and press Backspace/Delete

Result: The selected content is deleted
Expected: The Delete/Backspace button press is ignored
1 2 3 4 5 6