In Development
Last Updated: 29 Aug 2026 13:54 by ADMIN
Scheduled for 2026 Q3 SP1

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.

Duplicated
Last Updated: 17 Aug 2026 15:11 by ADMIN

Hi Progress Telerik Team,

Our security team has reported a Content Security Policy issue related to inline scripts in Progress Telerik UI for ASP.NET AJAX. Could you please add nonce support for inline scripts so we can resolve this issue in a compliant way?

Please let us know if you need any additional details from our side.

Thank you,
Hira Kewlani

Pending Review
Last Updated: 13 Aug 2026 14:49 by Mrinal

After upgrading to 2026.2.708, RadAsyncUpload file uploads fail with HTTP 403 Forbidden originating from the new CSRF validation (AsyncUploadHandler.ValidateCsrfToken). The handler returns an HTML error response.

The failure occurs only in our multi-host (load-balanced) environment. In multihost environment as well Issue is inconsistent. The exact same build works correctly on a single-node local/dev machine.

Refer support ticket raise for the Issue to get more detail.

RadAsyncUpload fails with HTTP 403 (ValidateCsrfToken) in multi-node/web-farm environment after upgrade to 2026.2.708 | View Ticket | Your Account

Declined
Last Updated: 10 Aug 2026 09:03 by ADMIN
Currently the the ImageEditor (and the Editor) are looking for standard .ascx files with the names of its dialogs and it is not optimized for a scenario in which these dialogs are pre-compiled.
Pending Review
Last Updated: 17 Jul 2026 14:00 by Márcio
Created by: Márcio
Comments: 0
Category: UI for ASP.NET AJAX
Type: Feature Request
1
When I edit text in RadEditor with Track Changes enabled and insert a new line, the editor does not track the insertion of the new line

I know that this command is not supported actually, but has a possibility this feature is available in next versions? or a palliative code?
Completed
Last Updated: 29 Jun 2026 11:31 by ADMIN
Release 2026 Q2 SP1

I'm using a RadTab and one of the RadPageViews starts with an RadAsyncUpload-Control. When I use arrow keys to select this tab and try to use the Tab-Key to focus the next element (the RadAsyncUpload in this case) nothing happens. If any other control (like a textbox) is placed above my upload control there is no problem focusing it.

You can see this in the attached Demoproject when using arrow keys to select to RpvUpload.

Completed
Last Updated: 04 Jun 2026 12:28 by ADMIN
Release 2026 Q2 SP1

When attempting to view the page in design view, here's what it looks like:

 

Here is the markup:

    <telerik:RadPanelBar ID="RadPanelBar1" runat="server">
        <Items>
            <telerik:RadPanelItem runat="server" Expanded="True" PreventCollapse="true">
                <HeaderTemplate>
                    <div ID="content-header">
                        Auditing Report | GPO Changes For User
                    </div>
                </HeaderTemplate>
                <ContentTemplate>
                    <div ID="content-body">
                        <telerik:ReportViewer ID="ReportViewer1" runat="server" ReportBookID="" Width="100%" Height="12in">
                        </telerik:ReportViewer>
                    </div>
                </ContentTemplate>
            </telerik:RadPanelItem>
        </Items>
    </telerik:RadPanelBar>

Completed
Last Updated: 12 May 2026 18:17 by ADMIN
Release 2026 Q2

Dear staff I know this post

https://www.telerik.com/support/code-library/detecting-changes-to-the-radeditor

But in any case the component RadEditor have the method 'OnTextChanged' in the client side.

Probably, id it doesn't works, is better to remove it.

 

Thanks

Renato

Pending Review
Last Updated: 11 May 2026 09:49 by Lars
Created by: Lars
Comments: 0
Category: UI for ASP.NET AJAX
Type: Feature Request
0

There is significant latency when a user has many images in a list or dropdown list, particularly those with sub-choices that also have images.  Because of this, we tried implementing design-time templates to allow lazy loading of images for RadComboBox.  While implementing a solution is possible, it was much more complicated than expected.

We have previuisly raised a feature request for simular controls that was fixed (Thanks for that) but our topp prioority component is The combobox. see Allow lazy loading of images with design-time templates for ListBox and ComboBox

D
uring the discussion a few questions was rasied from telerik:

Currently, the ComboBox has the Load on Demand functionality which focuses on loading items as needed, but it does not specifically address lazy loading of images inside the templates. Before proceeding further, I’d like to confirm your current setup to suggest the best approach:

  • Are you using server-side or client-side data binding with RadComboBox?
  • Are you using design-time templates or injecting templates dynamically?
  • How are images currently loaded in your ComboBox items?
  • Is your main concern the initial load time, scrolling performance, or something else?

Reasons (Hope it makes sense)

  • Only server-side databinding (with both controls).

  • We are using both ItemTemplate with custom images (where we then control lazy loading ourselves) and ImageUrl where we lose this possibility and have issues. We also dynamically load custom controls (ITemplate) in a few places.

The issue is that having many images in a combobox breaks TTI with the page if the images take some time to load. This problem vanishes completely when we use ItemTemplate and add loading="lazy" to our images. In our large applications, it would be very time consuming (and cause some other issues) to use ItemTemplate everywhere though, and we would like to be able to just set ImageUrl for example when creating a RadComboBoxItem manually. 

 

Completed
Last Updated: 24 Apr 2026 12:28 by ADMIN
Release 2026 Q2

The problem is that when you click the buttons, the RadDateRangePicker is filled with the start of 2025-06-01 and the end of 2025-06-30. Then, when you click the button again, a change should occur in the RadDateRangePicker: start of 2025-07-01 and end of 2025-07-31.


1 step => correct

2 step => incorrect


Result
The first time you click the button, it returns the start date to 06/01/2025 and the end date to 06/30/2025 (this is correct). Clicking it again returns the start date to 06/30/2025 and the end date to 07/31/2025 (this is incorrect).

Work around
 - Local page
js code fixed 

const datepicker = $find('<%= radDateRangePicker2.ClientID %>');

datepicker.set_rangeSelectionStartDate(null);
datepicker.set_rangeSelectionEndDate(null);


- Global fixed All controls
C# in extension control 

public bool EnableDateResetting
{
    get => ViewState["EnableDateResetting"] as bool? ?? false;
    set => ViewState["EnableDateResetting"] = value;
}

public eDateRangePicker() : base()
{
	Load += EDateRangePicker_Load;
}

private void EDateRangePicker_Load(object sender, EventArgs e)
{
    if (EnableDateResetting)
    {
        RegisterDateResettingScript();
    }
}

private void RegisterDateResettingScript()
{
	string script = $@"
		Sys.Application.add_load(function() {{
			const picker = $find('{ClientID}');

			if (picker) {{
				const origStart = picker.set_rangeSelectionStartDate;
				const origEnd = picker.set_rangeSelectionEndDate;

				picker.set_rangeSelectionStartDate = function(date) {{
					if (date !== null && !this._isResetting) {{
						const currentStart = this.get_rangeSelectionStartDate();
						const currentEnd = this.get_rangeSelectionEndDate();
                
						if (currentStart || currentEnd) {{
							this._isResetting = true;

							origStart.call(this, null);
							origEnd.call(this, null);

							this._isResetting = false;
						}}
					}}

					return origStart.call(this, date);
				}};

				picker.set_rangeSelectionEndDate = function(date) {{

					return origEnd.call(this, date);
				}};
			}}
		}});
	";

    ScriptManager.RegisterStartupScript(this, GetType(), $"DateResetting_{ClientID}", script, true);
}

Completed
Last Updated: 22 Apr 2026 10:05 by ADMIN
Release 2026 Q2
Simple reproducible is attached to illustrate the problem.

A workaround may be replacing RadButtons that invokes such postbacks with regular buttons and using a form decorator

Alternatively, you can simply disable the handler URL encryption

You can also put the following in the global.asax file to prevent the version from rendering on the page markup
        protected void Application_BeginRequest(object sender, EventArgs e)
        {
			System.Web.HttpContext.Current.Items["_!TelerikVersionStampRendered"] = true;
        }
or you can add the same line in a global Page_Load handler (e.g., in a base page class or in the master page your project uses)
Completed
Last Updated: 25 Feb 2026 08:05 by ADMIN
Hello Telerik Team,

I'm implementing HeaderContext filtering with checkbox lists on a RadGrid in a legacy ASP.NET WebForms application. 

Current Setup:
- FilterType="HeaderContext"
- FilterCheckListEnableLoadOnDemand="true"
- OnFilterCheckListItemsRequested event populates checkboxes from session data

Issue:
Users experience 500-2000ms delay when opening filter menus (AJAX callback to server). 
In our production environment with slow network and high concurrent users, this creates 
poor user experience.

Questions:
1. Is there a way to pre-populate checkbox lists during grid initialization 
   (avoiding AJAX callback)?
2. Can we use OnItemCreated to populate checkbox lists with 
   FilterCheckListEnableLoadOnDemand="false"? If so, what's the correct approach?
3. Is there a client-side caching mechanism for checkbox list items?
4. What's the recommended pattern for large datasets (1000+ rows) with multiple 
   filterable columns?

Environment:
- Telerik.Web.UI version: v4.0.30319
- .NET Framework: 4.8
- Browser: Chrome, IE11
- Grid has ~10 columns with 5 using checkbox filters

Any guidance on performance optimization would be greatly appreciated!

Thank you,
Anurag pandey
Declined
Last Updated: 27 Jan 2026 14:44 by ADMIN
Created by: Roger
Comments: 1
Category: UI for ASP.NET AJAX
Type: Feature Request
1
For security reasons SRI is getting more important over time. For compliance reasons I am forced to secure external applications for my clients.

In my AJAX web applications I am using RadScriptManager. However, it seems that the "integrity" directive is not supported by RadScriptReference.

E.g.:

<telerik:RadScriptManager ID="RadScriptManager1" runat="server">
    <Scripts>
            <telerik:RadScriptReference  Path="https://code.jquery.com/jquery-3.7.1.js" integrity="sha384-NdBrHQkGhjPzZhn" crossorigin="anonymous" />
        <telerik:RadScriptReference Path="https://code.jquery.com/jquery-3.2.1.slim.min.js" integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN" crossorigin="anonymous" />
    </Scripts>
</telerik:RadScriptManager>
Declined
Last Updated: 27 Jan 2026 14:34 by ADMIN
Created by: Bhrugesh
Comments: 4
Category: UI for ASP.NET AJAX
Type: Feature Request
5

I would like to know if Telerik ASPNET Ajax  control supports securing CSP by adding nonce- or sha256- as mentioned in https://www.sitepoint.com/improving-web-security-with-the-content-security-policy (Refer section - Protecting Inline Styles and Scripts Using a Nonce).
Completed
Last Updated: 15 Jan 2026 16:05 by ADMIN
Release 2025 Q4 SP2
Created by: Randall
Comments: 0
Category: UI for ASP.NET AJAX
Type: Feature Request
0
Requesting Keyboard navigation be implemented for the Org Chart control to support 508 Accessibility.
Completed
Last Updated: 04 Dec 2025 12:51 by ADMIN

 

Attached my grid code. Most columns are removed for readability

    <telerik:RadGrid ID="grdChanges" runat="server" Width="1140" 
        skin="WebBlue" style="margin-top:13px; margin-right:13px; outline: 0 !important;"
        ShowFooter="false" AllowSorting="false">      
    <ClientSettings>
            <Scrolling AllowScroll="True" ScrollHeight="487px" UseStaticHeaders="true" />
    </ClientSettings>                      
    <MasterTableView GroupLoadMode="Client" AutoGenerateColumns="False" HeaderStyle-Font-Bold="true"> 
        <HeaderStyle CssClass="InnerHeaderStyle"/>
        <ItemStyle CssClass="InnerItemStyle"/>
        <AlternatingItemStyle CssClass="InnerAlernatingItemStyle"/>
        <CommandItemStyle CssClass="CommandHeaderStyle" />

        <ColumnGroups>
           <telerik:GridColumnGroup Name="Passenger Trips" HeaderText="Passenger Trips" HeaderStyle-HorizontalAlign="Center"/>           
           <telerik:GridColumnGroup Name="Ton Trips" HeaderText="Ton Trips" HeaderStyle-HorizontalAlign="Center"/>                                                         
           <telerik:GridColumnGroup Name="Miles Per Trip" HeaderText="Miles Per Trip" HeaderStyle-HorizontalAlign="Center"/>           
           <telerik:GridColumnGroup Name="Miles Per Hour" HeaderText="Miles Per Hour" HeaderStyle-HorizontalAlign="Center"/>                          
        </ColumnGroups> 

        <Columns> 

            <telerik:GridNumericColumn DataField="MilesPerHour_Proj" HeaderText="Project"  
                                       ColumnGroupName ="Miles Per Hour"
                                       DataFormatString="{0:N1}" DecimalDigits="0"
                                       HeaderStyle-HorizontalAlign="Center" 
                                       HeaderStyle-Width="60px" ItemStyle-BackColor="White"
                                       ItemStyle-HorizontalAlign="Right" AllowRounding="true" />

            <telerik:GridNumericColumn DataField="MilesPerHour_Base" HeaderText="Base"  
                                       ColumnGroupName ="Miles Per Hour"
                                       DataFormatString="{0:N1}" DecimalDigits="0"
                                       HeaderStyle-HorizontalAlign="Center" 
                                       HeaderStyle-Width="60px" ItemStyle-BackColor="White"
                                       ItemStyle-HorizontalAlign="Right" AllowRounding="true" />                            

            <telerik:GridNumericColumn DataField="MilesPerHourChange" HeaderText="Change"  
                                       ColumnGroupName ="Miles Per Hour"
                                       DataFormatString="{0:N1}" DecimalDigits="0"
                                       HeaderStyle-HorizontalAlign="Center" 
                                       HeaderStyle-Width="60px" ItemStyle-BackColor="White"
                                       ItemStyle-HorizontalAlign="Right" AllowRounding="true" />
        </Columns> 

        <NoRecordsTemplate> 
            <div style="padding: 5px"> 
                No records available. 
            </div> 
        </NoRecordsTemplate> 

    </MasterTableView> 
    <FilterMenu EnableTheming="True"> 
        <CollapseAnimation Duration="200" Type="OutQuint" /> 
    </FilterMenu> 
</telerik:RadGrid> 

                
Completed
Last Updated: 04 Dec 2025 12:50 by ADMIN

 

ChatGPT recommended "Turn off Telerik’s “old” ARIA settings (they are overly strict and often invalid):"

i removed it and it worked. WTH?

What i supposed to do now? I added these settings in all our products

 <telerik:RadGrid ID="grdImpacts" runat="server" EnableAriaSupport="true" 
              style="margin-top:10px;margin-right:25px;margin-left:15px;"
              ShowStatusBar="true" AutoGenerateColumns="False"
              Width="650px" skin="WebBlue" 
              AllowSorting="False" AllowMultiRowSelection="False" AllowPaging="false"
              OnNeedDataSource="grdMain_OnNeedDataSource">

 

Unplanned
Last Updated: 26 Nov 2025 11:31 by ADMIN
Created by: Yossi
Comments: 1
Category: UI for ASP.NET AJAX
Type: Feature Request
0

Hello,

We see the integration of AI through the AI​​Prompt component within the ASP.Net Core Editor, which enables a smarter and more efficient content creation experience, and we love it. We would be very happy if we could have the same integration for the Ajax Editor as well.

Thanks in advance
Yossi
Completed
Last Updated: 05 Nov 2025 13:56 by ADMIN
Release 2025 Q4 (Nov)
Created by: Alex
Comments: 0
Category: UI for ASP.NET AJAX
Type: Bug Report
1

When using client-side code to filter my Grid, the "BETWEEN" filter does not work well when filtering DateTime values where the time is after 12:00 AM.

i.e., filtering the dates between 9/11/2025 and 9/12/2025 does not include 9/12/2025 at 12:01 AM or any date where the time is after 12:00 AM.

Additionally, when passing datetime values to the filter function, the time component is dropped afterward.

var filter = "9/11/2025,12:00:00,AM 9/12/2025,11:59:59,PM"
tableView.filter(columnName, filter, "Between");

 

<FilterTemplate>
                        <telerik:RadLabel runat="server" AssociatedControlID="FromOrderDatePicker" Text="From"></telerik:RadLabel>
                        <telerik:RadDatePicker RenderMode="Lightweight" ID="FromOrderDatePicker" runat="server" Width="140px" ClientEvents-OnDateSelected="FromDateSelected"
                            MinDate="07-04-1996" MaxDate="05-06-1998" FocusedDate="07-04-1996" DbSelectedDate='<%# startDate %>' />
                        <telerik:RadLabel runat="server" AssociatedControlID="ToOrderDatePicker" Text="to" Style="padding-left: 5px;"></telerik:RadLabel>
                        <telerik:RadDatePicker RenderMode="Lightweight" ID="ToOrderDatePicker" runat="server" Width="140px" ClientEvents-OnDateSelected="ToDateSelected"
                            MinDate="07-04-1996" MaxDate="05-06-1998" FocusedDate="05-06-1998" DbSelectedDate='<%# endDate %>' />
                            <telerik:RadScriptBlock ID="RadScriptBlock1" runat="server">
                                <script type="text/javascript">
                                    function FromDateSelected(sender, args) {
                                        var tableView = $find("<%# ((GridItem)Container).OwnerTableView.ClientID %>");
                                    var ToPicker = $find('<%# ((GridItem)Container).FindControl("ToOrderDatePicker").ClientID %>');
 
                                    var fromDate = FormatSelectedDate(sender) + ",12:00:00,AM";
                                    var toDate = FormatSelectedDate(ToPicker) + ",11:59:59,PM";

                                    tableView.filter("OrderDate", fromDate + " " + toDate, "Between");
 
                                }
                                function ToDateSelected(sender, args) {
                                    var tableView = $find("<%# ((GridItem)Container).OwnerTableView.ClientID %>");
                                    var FromPicker = $find('<%# ((GridItem)Container).FindControl("FromOrderDatePicker").ClientID %>');
 
                                    var fromDate = FormatSelectedDate(FromPicker);
                                    var toDate = FormatSelectedDate(sender);
 
                                    tableView.filter("OrderDate", fromDate + " " + toDate, "Between");
                                }
                                function FormatSelectedDate(picker) {
                                    var date = picker.get_selectedDate();
                                    var dateInput = picker.get_dateInput();
                                    var formattedDate = dateInput.get_dateFormatInfo().FormatDate(date, dateInput.get_displayDateFormat());
 
                                    return formattedDate;
                                }
                                </script>
                            </telerik:RadScriptBlock>
                        </FilterTemplate>

 

For more details, you can take Ticket 1702122 as a reference.

1 2 3 4 5 6