Telerik Forums
UI for ASP.NET AJAX Forum
0 answers
13 views

Hello everyone,

Here are the highlights of the new online resources we published this week from 29 Oct 2025 to 05 Nov 2025:

Article: https://www.telerik.com/products/aspnet-ajax/documentation/controls/speechtotextbutton/overview
Summary: Use the SpeechToTextButton control in Telerik UI for ASP.NET AJAX to capture microphone input and insert recognized text into a specified input or textarea using the browser’s Web Speech API. The overview shows how to configure the target element and recognition settings (language/culture, interim/continuous results), lists HTTPS/permission and browser support requirements (e.g., Chrome/Edge), and details the server- and client-side API and events (start, result, end, error) so you can manage the recognition lifecycle in JavaScript.

Article: https://www.telerik.com/products/aspnet-ajax/documentation/controls/speechtotextbutton/appearance
Summary: This article shows you how to style the ASP.NET AJAX SpeechToTextButton using built‑in skins and custom CSS, including setting the Skin property, toggling EnableEmbeddedSkins/EnableEmbeddedBaseStylesheet, and applying a CssClass. It also covers choosing a RenderMode (Classic or Lightweight) and identifying the control’s HTML/CSS hooks so you can create a custom skin and adjust size, colors, and visual states.

Article: https://www.telerik.com/products/aspnet-ajax/documentation/controls/speechtotextbutton/getting-started
Summary: This guide shows you how to add and configure the SpeechToTextButton in Telerik UI for ASP.NET AJAX to capture microphone input and insert recognized text into a target input (e.g., ASP.NET TextBox or RadTextBox). You’ll register the control, add the markup, associate it with the target input, configure recognition language/options, and wire client-side events for start/stop, results, and errors. It also covers browser and security requirements for the Web Speech API (HTTPS origin and microphone permissions) and provides a minimal working example to validate your setup.

Article: https://www.telerik.com/products/aspnet-ajax/documentation/controls/speechtotextbutton/client-side-programming/enums
Summary: This article lists the client-side enums for the ASP.NET AJAX SpeechToTextButton control and explains the meaning of each value and where it’s used in the control’s JavaScript API. Use these enums in your event handlers and custom logic to check recognition state, handle errors and permission changes, and avoid magic strings or numbers. The enums are available on the client side (Telerik.Web.UI) for consistent integration with SpeechToTextButton.

Article: https://www.telerik.com/products/aspnet-ajax/documentation/controls/speechtotextbutton/server-side-programming/enums
Summary: This article documents the server-side enumerations used by the Telerik UI for ASP.NET AJAX SpeechToTextButton. It lists each enum and its members, explains where they apply in the control’s API, and how they affect behavior and appearance so you can set them correctly in markup or code-behind (C#/VB.NET). Use it as a reference when configuring the control via server-side code.

Article: https://www.telerik.com/products/aspnet-ajax/documentation/controls/speechtotextbutton/client-side-programming/events
Summary: Handle the ASP.NET AJAX SpeechToTextButton client-side events in JavaScript to manage recognition lifecycle, receive result notifications, and handle errors. The article shows how to subscribe via the control’s OnClient* properties or programmatically through the client-side object’s add/remove event methods, and details the event arguments you’ll use to access recognition data and status. Use these hooks to capture interim and final transcripts, update UI state, and control when recognition starts, stops, or is canceled from your application code.

Article: https://www.telerik.com/products/aspnet-ajax/documentation/controls/speechtotextbutton/client-side-programming/overview
Summary: Learn how to get the RadSpeechToTextButton client-side instance in ASP.NET AJAX and use its JavaScript API to start/stop speech recognition, handle results and errors, and update input elements. The article summarizes the control’s client-side events, methods, and properties so you can wire up event handlers and control recognition from JavaScript.

Article: https://www.telerik.com/products/aspnet-ajax/documentation/controls/speechtotextbutton/server-side-programming/overview
Summary: Learn how to use the RadSpeechToTextButton server-side in Telerik UI for ASP.NET AJAX: its server-side properties, methods, and events, and how they interact with the ASP.NET Web Forms page lifecycle. Configure the control in code-behind, handle postbacks, and access the recognized text (e.g., via the target input or control state) for validation and processing.

Article: https://www.telerik.com/products/aspnet-ajax/documentation/knowledge-base/asyncupload-display-pdf-preview-file-selection
Summary: Learn how to show a client-side PDF preview immediately after file selection in ASP.NET AJAX using RadAsyncUpload, without uploading to the server. You handle OnClientFileSelected, get the selected File from the underlying input, validate it as a PDF, and render it in an iframe/object or RadPdfViewer via URL.createObjectURL or FileReader, with notes on multiple files and revoking object URLs.

Article: https://www.telerik.com/products/aspnet-ajax/documentation/controls/speechtotextbutton/client-side-programming/properties
Summary: This article documents the client-side properties of the Telerik ASP.NET AJAX SpeechToTextButton and shows how to access them through its JavaScript object ($find) using the standard get_/set_ pattern. You will learn how to read and update behavior, state, and configuration at runtime (for example, enable/disable, target control, and recognition state) so you can integrate speech-to-text into your forms without postbacks.

Feel free to check them out and share your thoughts!

The Telerik Team

Atanas
Telerik team
 updated question on 05 Nov 2025
44 answers
9.1K+ views

This sticky thread lists known issues and breaking changes introduced in the UI for ASP.NET AJAX releases.


Q3 2011 (Version number: 2011.3.1115)

Problem: When adding items to OData-enabled controls (RadMenu, RadTreeView, RadListBox, RadComboBox) through design time erroneous markup is applied to the control:

<telerik:RadListBox runat="server" ID="RadListBox1">
    <Items>
    </Items>
    <WebServiceSettings>
        <ODataSettings InitialContainerName="">
        </ODataSettings>
    </WebServiceSettings>
</telerik:RadListBox>

Please note the added ODataSettings section. It will cause JavaScript errors on the page.

Solution: Remove the ODataSetting section and the issue will vanish. The problem is also fixed in the Q3 SP1 release, version number 2011.3.1305
Vasko
Telerik team
 updated question on 20 Oct 2025
1 answer
784 views

When I run my project I'm getting this error

Could not load file or assembly 'Telerik.Web.UI' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)

In my web.config I checked that the version in the web.config is the same as the version I'm using in references

<assemblyIdentity name="Telerik.Web.UI" publicKeyToken="121fae78165ba3d4" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-2020.2.617.45" newVersion="2020.2.617.45" />

 

Vessy
Telerik team
 answered on 22 Oct 2021
1 answer
9 views
Hi, I am facing an issue where the Document Manager pop-up window that appears when attaching documents disappears from the right-hand file settings menu when zooming out of the page in any browser.

The issue is 
also reproducible here: Official RadEditor By Telerik

Please see the recording for more information:- https://jam.dev/c/de662891-5a44-4419-8738-616672fbb7f8

  Before:-

 


After:-


Rumen
Telerik team
 answered on 03 Nov 2025
4 answers
22 views

Hello Telerik Team,

Our customers identified a few accessibility concerns related to the RadEditor Image Manager and Document Manager popup windows:

  1. Keyboard Focus on Popup Activation
    When a user tabs to the Image Manager plugin and presses Enter, the popup window opens. However, keyboard focus does not automatically move into the popup. Instead, the user must press the Tab key again to shift focus manually.
    ➤ To meet accessibility standards, focus should move directly into the modal or popup when it appears. This ensures that keyboard and screen reader users can interact with the dialog immediately without navigating through background content.
  2. Missing Dialog Roles and Labels
    The dialog containers ( see below ) currently lack appropriate accessibility roles.
    ➤ Each dialog container should include role="dialog".
    ➤ If the dialog has a visible title, it should also include aria-labelledby referencing the ID of that title element. This allows assistive technologies to announce the dialog context clearly.

Is there any way to fix these two issues?

Thanks,

Lan

 

Rumen
Telerik team
 answered on 31 Oct 2025
1 answer
18 views

Hi,

I need to restore the expanded state of a RadTreeList after a redirect. I am storing the expanded items in Session before the redirect. However, server-side expansion only expands the root, not the child items.

Can someone share a JavaScript example or approach to fully expand all previously expanded nodes by the user after a redirect using the stored session data?

If your approach works in Server Side, I will use it on my solution

Thanks team!

This is an example using server side, but it expands only the first root element (not sure why)

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

namespace SysMgmt.Groups
{
    public partial class GroupMaintenanceServer : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                RadTreeList1.NeedDataSource += RadTreeList1_NeedDataSource;
            }
        }

        protected void RadTreeList1_NeedDataSource(object sender, TreeListNeedDataSourceEventArgs e)
        {
            RadTreeList1.DataSource = GetData();
        }

        // ✅ Guardar los nodos expandidos antes del render
        protected void Page_PreRender(object sender, EventArgs e)
        {
            var expandedItems = RadTreeList1.Items
                .Where(i => i.Expanded)
                .Select(i => (int)i.GetDataKeyValue("ID"))
                .ToList();

            Session["ExpandedNodes"] = expandedItems;
        }

        protected void RadTreeList1_DataBound(object sender, EventArgs e)
        {
            if (Session["ExpandedNodes"] is List<int> expanded)
            {
                foreach (TreeListDataItem item in RadTreeList1.Items)
                {
                    int id = (int)item.GetDataKeyValue("ID");
                    if (expanded.Contains(id))
                        item.Expanded = true;
                }
            }
        }

        protected void RadTreeList1_ItemCommand(object sender, TreeListCommandEventArgs e)
        {
            if (e.CommandName == "EditItem" && e.Item is TreeListDataItem dataItem)
            {
                int id = (int)dataItem.GetDataKeyValue("ID");
                Response.Redirect($"EditPage.aspx?id={id}");
            }
        }

       
        private DataTable GetData()
        {
            DataTable table = new DataTable();
            table.Columns.Add("ID", typeof(int));
            table.Columns.Add("ParentID", typeof(int));
            table.Columns.Add("Text", typeof(string));
            table.Columns.Add("Value", typeof(string));

            // Root nodes
            table.Rows.Add(1, DBNull.Value, "Root 1", "A");
            table.Rows.Add(2, DBNull.Value, "Root 2", "B");

            // Children of Root 1
            table.Rows.Add(3, 1, "Child 1.1", "A1");
            table.Rows.Add(4, 1, "Child 1.2", "A2");

            // Children of Root 2
            table.Rows.Add(5, 2, "Child 2.1", "B1");
            table.Rows.Add(6, 2, "Child 2.2", "B2");

            // Sub-child
            table.Rows.Add(7, 3, "SubChild 1.1.1", "A1a");

            return table;
        }
    }
}
Leslie
Top achievements
Rank 1
Iron
 answered on 30 Oct 2025
1 answer
20 views

Hi,

I need to restore the expanded state of a RadTreeList after a redirect. I am storing the expanded items in Session before the redirect. However, server-side expansion only expands the root, not the child items.

Can someone share a JavaScript example or approach to fully expand all previously expanded nodes after a redirect using the stored session data? Or maybe provide a better example on Server Side

Thanks!


This is the example I was using on server side, but it only expands the root element


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

namespace Momentum.Mapp.WebApp.SysMgmt.Groups
{
    public partial class GroupMaintenanceServer : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                RadTreeList1.NeedDataSource += RadTreeList1_NeedDataSource;
            }
        }

        protected void RadTreeList1_NeedDataSource(object sender, TreeListNeedDataSourceEventArgs e)
        {
            RadTreeList1.DataSource = GetData();
        }

        protected void Page_PreRender(object sender, EventArgs e)
        {
            var expandedItems = RadTreeList1.Items
                .Where(i => i.Expanded)
                .Select(i => (int)i.GetDataKeyValue("ID"))
                .ToList();

            Session["ExpandedNodes"] = expandedItems;
        }

        protected void RadTreeList1_DataBound(object sender, EventArgs e)
        {
            if (Session["ExpandedNodes"] is List<int> expanded)
            {
                foreach (TreeListDataItem item in RadTreeList1.Items)
                {
                    int id = (int)item.GetDataKeyValue("ID");
                    if (expanded.Contains(id))
                        item.Expanded = true;
                }
            }
        }

        protected void RadTreeList1_ItemCommand(object sender, TreeListCommandEventArgs e)
        {
            if (e.CommandName == "EditItem" && e.Item is TreeListDataItem dataItem)
            {
                int id = (int)dataItem.GetDataKeyValue("ID");
                Response.Redirect($"EditPage.aspx?id={id}");
            }
        }

        // Ejemplo de datos simples
        private DataTable GetData()
        {
            var dt = new DataTable();
            dt.Columns.Add("ID", typeof(int));
            dt.Columns.Add("ParentID", typeof(int));
            dt.Columns.Add("Name", typeof(string));

            dt.Rows.Add(1, DBNull.Value, "Continents");
            dt.Rows.Add(2, 1, "Asia");
            dt.Rows.Add(3, 1, "Europe");
            dt.Rows.Add(4, DBNull.Value, "Oceans");
            dt.Rows.Add(5, 4, "Pacific");
            dt.Rows.Add(6, 4, "Atlantic");

            return dt;
        }

     }
}

Vasko
Telerik team
 answered on 29 Oct 2025
1 answer
13 views
Hi,

The OK and Cancel buttons of Image Map Editor are not properly visible in French (France).

I have attached a screenshot.
Atul
Top achievements
Rank 1
Iron
Iron
Iron
 updated question on 27 Oct 2025
1 answer
15 views

I cannot seem toe get my XAxis right with the following code, I simply want to display whole hours on the X-axis and values coming from a dataset like so

 

0 2025-10-22 00:31:16.000
0 2025-10-22 00:31:46.000
0 2025-10-22 00:32:16.000
0 2025-10-22 00:32:46.000
0 2025-10-22 00:33:16.000
18 2025-10-22 00:33:46.000
1591 2025-10-22 00:34:16.000
1584 2025-10-22 00:34:46.000
1585 2025-10-22 00:35:16.000
1589 2025-10-22 00:35:46.000
1585 2025-10-22 00:36:16.000
0 2025-10-22 00:36:46.000
0 2025-10-22 00:37:16.000
0 2025-10-22 00:37:46.000
0 2025-10-22 00:38:16.000
0 2025-10-22 00:38:46.000
0 2025-10-22 00:39:16.000
0 2025-10-22 00:39:46.000
0 2025-10-22 00:40:16.000
0 2025-10-22 00:40:46.000

 

.

 

 <XAxis DataLabelsField="datum" Type="Category" Name="category" AxisCrossingValue="0" Color="black" BaseUnit="Hours" BaseUnitStep="1">
    <LabelsAppearance Visible="true" RotationAngle="45">
     </LabelsAppearance>

This produces the XAxis as shown in the attached screenshot.

What is the way to go?

 

 

Vasko
Telerik team
 answered on 27 Oct 2025
2 answers
145 views

Greetings,

I have noticed today that the following demo pages are broken when using the latest versions of Chrome & Edge:

https://demos.telerik.com/aspnet-ajax/htmlchart/examples/appearance/configuringappearance/defaultcs.aspx

https://demos.telerik.com/aspnet-ajax/htmlchart/examples/functionality/dateaxis/defaultcs.aspx

https://demos.telerik.com/aspnet-ajax/htmlchart/examples/functionality/multiline-labels/defaultcs.aspx

https://demos.telerik.com/aspnet-ajax/htmlchart/examples/functionality/pan-zoom/defaultcs.aspx

Each of these have a series of JavaScript errors that prevent the page from working:

RadHtmlChart.js:79 Uncaught SyntaxError: Invalid or unexpected token
    at b.RadHtmlChart._parseObject (RadHtmlChart.js:79:46)
    at b.RadHtmlChart._configurePlotArea (RadHtmlChart.js:128:47)
    at b.RadHtmlChart._getMainConfig (RadHtmlChart.js:96:20)
    at b.RadHtmlChart._getChartConfig (RadHtmlChart.js:82:3)
    at b.RadHtmlChart._createStandardChart (RadHtmlChart.js:74:57)
    at b.RadHtmlChart.createChart (RadHtmlChart.js:59:3)
    at b.RadHtmlChart._initialize (RadHtmlChart.js:40:3)
    at b.RadHtmlChart.initialize (RadHtmlChart.js:34:7)
    at b.RadHtmlChart.endUpdate (Telerik.Web.UI.WebResource.axd?_TSM_HiddenField_=ctl00_QsfScriptManager_TSM&compress=1&_TSM_CombinedScripts_=%3b%3bSystem.Web.Extensions%2c+Version%3d4.0.0.0%2c+Culture%3dneutral%2c+PublicKeyToken%3d31bf3856ad364e35%3aen-US%3a5bc44d53-7cae-4d56-af98-205692fecf1f%3aea597d4b%3ab25378d2:6:53689)
    at Sys.Component.create (Telerik.Web.UI.WebResource.axd?_TSM_HiddenField_=ctl00_QsfScriptManager_TSM&compress=1&_TSM_CombinedScripts_=%3b%3bSystem.Web.Extensions%2c+Version%3d4.0.0.0%2c+Culture%3dneutral%2c+PublicKeyToken%3d31bf3856ad364e35%3aen-US%3a5bc44d53-7cae-4d56-af98-205692fecf1f%3aea597d4b%3ab25378d2:6:55151)

 

Hope this helps ....

Ralf
Top achievements
Rank 2
Iron
 answered on 20 Oct 2025
Narrow your results
Selected tags
Tags
+? more
Top users last month
Rob
Top achievements
Rank 3
Bronze
Iron
Iron
Sergii
Top achievements
Rank 1
Iron
Iron
Dedalus
Top achievements
Rank 1
Iron
Iron
Lan
Top achievements
Rank 1
Iron
Doug
Top achievements
Rank 1
Want to show your ninja superpower to fellow developers?
Top users last month
Rob
Top achievements
Rank 3
Bronze
Iron
Iron
Sergii
Top achievements
Rank 1
Iron
Iron
Dedalus
Top achievements
Rank 1
Iron
Iron
Lan
Top achievements
Rank 1
Iron
Doug
Top achievements
Rank 1
Want to show your ninja superpower to fellow developers?
Want to show your ninja superpower to fellow developers?