Summary
After editing an Excel `.xlsx` file using Telerik RadSpreadsheet and saving it via the default Save option, the saved file becomes corrupted. It no longer opens in RadSpreadsheet (throws an error) and shows a repair warning in Microsoft Excel.
Reproduction Steps
1. Upload an Excel `.xlsx` file to the `ABC` folder on the server.
2. Load the file in RadSpreadsheet via a basic viewer page.
3. Make any small edit (e.g., change a cell’s value).
4. Click the built-in Save option in the RadSpreadsheet toolbar.
5. Attempt to:
- Reopen the saved file in RadSpreadsheet → Error: Object reference not set to an instance of an object.
- Open in Excel → Warning: “We found a problem with some content in ‘filename’. Do you want us to try to recover as much as we can?”
Files Attached
- `Original.xlsx` — Before editing, opens fine in both RadSpreadsheet and Excel.
- `Modified.xlsx` — After saving via RadSpreadsheet, causes errors.
- Screenshot of:
- RadSpreadsheet error :
- Excel repair prompt
Code Snippet :
<telerik:RadSpreadsheet ID="sample" runat="server" Visible="false" style="font-size: 10px;" />
protected void Page_Load(object sender, EventArgs e)
{
string fileName = (string)Session["SelectedFileName"];
SheetLoad(fileName);
}
private void SheetLoad(string fileName)
{
try
{
string filePath = Server.MapPath("~/ABC/" + fileName);
if (!File.Exists(filePath))
{
string errorMsg = "File not found: " + filePath;
ClientScript.RegisterStartupScript(this.GetType(), "alert", "alert('File not found!');", true);
return;
}
// Load spreadsheet using Telerik document provider
sample.Provider = new SpreadsheetDocumentProvider(filePath);
sample.Visible = true;
}
catch (Exception ex)
{
string errorMsg = "Error opening file: " + ex.Message + " | File: " + fileName;
ClientScript.RegisterStartupScript(this.GetType(), "alert", "alert('Error loading file!');", true);
}
}
**Observation:**
* This only happens for **some files**, especially ones that likely contain advanced Excel features.
* Other simpler files save and reload without any issue.
**Assumption:**
It seems the default save behavior of RadSpreadsheet is **not preserving some Excel structures**, leading to file corruption on save.
In version 2025 Q2, I am getting the following error message when opening the RadGrid in design mode:
System.NullReferenceException: Object reference not set to an instance of an object. at Telerik.Web.UI.Licensing.TelerikLicense.get_CurrentHost() at Telerik.Web.UI.Licensing.TelerikLicense.get_IsLicenseValid() at Telerik.Web.UI.RadGrid.Render(HtmlTextWriter writer) at System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer, ControlAdapter adapter) at System.Web.UI.Design.ControlDesigner.GetDesignTimeHtml()
Form controls rendered by the embedded columns (GridBoundColumn, GridDateTimeColumn, GridNumericColumn, etc.) in EditMode="Batch" do not have a label set and fail the accessibility checks.
The issue occurs when setting the Enabled property to false, which triggers a JavaScript error and causes the components to break.
Code to replicate the problem
<telerik:RadTextBox ID="RadTextBox1" runat="server" Enabled="false"></telerik:RadTextBox>
Hi
I have a RadEditor control where some toolbar functionalities are not working.
After searching for a possible reason, I used the OnClientCommandExecuting client-side event and noticed that sometimes, instead of the args with its value, I found the item of a RadTreeList control present on the page.
I tried to reproduce the issue by inserting an Editor and a TreeList on a page. I write some text in the Editor and try to change the color or background. Not always (and I can't figure out when), but sometimes the args are incorrect.
For example, if I open a node of the tree, the error is almost certain after that.
I send you an image of my javascript debugger.
I don't know what I can do, do you have any ideas?
Thanks
Michela
Dear Telerik Support. I found another bug related to this one below.
This line of code also causes the same issue.
$find("txtYear").clear();
See attached Console debug output.
It is my opinion that a hot fix needs to be done asap! The work around that Derek posted on May 23rd falls short of the bigger issue. This is a serious matter and needs to be addressed immediately.
Getting javascript error:
The bottom part of the last page of the PDF document stays hidden. If dragged with the mouse, the Page will move and can be viewed, releasing the mouse will scroll it back as a result, hiding the bottom part.
Issue can also be observed with the following demo: https://demos.telerik.com/aspnet-ajax/pdfviewer/overview/defaultcs.aspx
I am receiving the following ADA Compliance errors, when running a page scan for WCAG 2.1 AA:
Buttons must have discernible text: button.rcbActionButton
<button class="rcbActionButton" tabindex="-1" type="button">select</button>
Form elements must have labels: input.rcbInput.radPreventDecorate
<input name="ctl00$MainContent$MyCombo" type="text" class="rcbInput radPreventDecorate rcbEmptyMessage" id="ctl00_MainContent_MyCombo_Input" value="Search..." autocomplete="off"></input>
This is the component:
Hello -
I just updated my components to 2025.1.218, and am receiving the following ADA Compliance issues on a page scan. This is to conform to WCAG 2.1 AA. The component is the Ajax telerik:RadComboBox:
Buttons must have discernible text
<button class="rcbActionButton" tabindex="-1" type="button">select</button>
Form elements must have labels
<input name="ctl00$MainContent$ComboBox$NewCombo" type="text" class="rcbInput radPreventDecorate rcbEmptyMessage" id="ctl00_MainContent_ComboBox_NewCombo_Input" value="Search..." autocomplete="off"></input>
Component in .ascx file:
Please advise. Thanks!
While trying to update to latest version of Telerik ASP.Net Ajax, we are getting following exception:
An error occurred while running the wizard.
Error executing custom action Telerik.Web.UI.VSX.Actions.MultiProjectUpdateReferencesAction: System.Runtime.InteropServices.COMException (0x80004005): This reference cannot be removed from the project because it is always referenced by the compiler.
at VSLangProj.Reference.Remove()
at Telerik.VSX.Internal.VisualStudio.VisualStudioThreadHelper.<>c__DisplayClass0_0.<<RunInMainThread>b__0>d.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Microsoft.VisualStudio.Threading.JoinableTask.CompleteOnCurrentThread()
at Telerik.VSX.Internal.VisualStudio.VisualStudioThreadHelper.RunInMainThread(Action action)
at Telerik.VSX.ProjectConfigurators.ApplicationReferenceManager.RemoveReferences()
at Telerik.VSX.ProjectConfigurators.ApplicationReferenceManager.UpdateReferences()
at Telerik.VSX.Actions.UpdateReferencesAction.UpdateReferences(IProjectWrapUIComponents projectWrap)
at Telerik.VSX.Actions.MultiProjectActionBase`1.Execute(WizardContext wizardContext, IPropertyDataDictionary arguments)
at Telerik.VSX.Actions.MultiProjectUpdateReferencesActionBase`1.Execute(WizardContext wizardContext, IPropertyDataDictionary arguments)
at Telerik.VSX.WizardEngine.ActionManager.ExecActions()
I would request to have the upgrade wizard handle it and show a graceful message instead of throwing the exception as it is doing right now.
Scenario description and workaround follow. Note the comments in the workaround and test before using, because it introduces some other unwanted behaviors, mostly related to the bottom/right edge of the zone. WORKAROUND 1: <div id="zone" style="width: 600px; height: 500px; background: yellow;"></div> <telerik:RadWindow runat="server" ID="rw1" RenderMode="Lightweight" VisibleOnPageLoad="true" Left="0" Top="0" RestrictionZoneID="zone"></telerik:RadWindow> <script> Telerik.Web.UI.Window.LightweightView.prototype._resizingHandler = function(resizable, args){ $telerik.cancelRawEvent(args.get_domEvent()); var edges = this.restrictBounds, bounds = this._getResizeBounds(args), borders = this.resizeHelper.borders, fullBounds = { x: bounds.x - borders.left,//originally, subtract y: bounds.y - borders.top,//originally, subtract width: bounds.width + borders.horizontal, height: bounds.height + borders.vertical}; //debugger //console.log(fullBounds); //changing the direction in which borders are counted above (+ or -) changes the behavior and the potential issues //if you subtract from the position, resizing will not be available next to the top/left border of the restriction zone //if you add to the position, resizing will be available but the user can resize in the direction of the zone bounds and thus, out of the bounds of the zone, so dragging may become unavailable //also, this will make resizing worse when the window touches the right or bottom of the zone var inContainer = this.window._checkRestrictionZoneBounds(edges, fullBounds); bounds.width = Math.max(resizable.options.constraints.minWidth, bounds.width); bounds.height = Math.max(resizable.options.constraints.minHeight, bounds.height); args.set_cancel(true); if(inContainer && this.touchCount++ > 0) { var style = this.ui.container.style; style.left = bounds.x + "px"; style.top = bounds.y + "px"; this._setWidth(bounds.width); this._setHeight(bounds.height); this._currentResizeBounds = bounds; } } </script> WORKAROUND 2: Add this to the resizeEnd and dragEnd events of the RadWindow to try and have it never touch the sides of the restriction zone at all. function keepThisWindowInBounds(sender) { if (!sender.isMinimized() && !sender.isMaximized()) { var position = sender.getWindowBounds(); var rzRect = document.getElementById(sender._restrictionZoneID).getBoundingClientRect(); // note rzRect height and width are both 1px bigger than the rzElement clientWidth and clientHeight // check width and height if (position.width > rzRect.width - 3) { position.width = rzRect.width - 3; sender.set_width(position.width); } if (position.height > rzRect.height - 3) { position.height = rzRect.height - 3; sender.set_height(position.height); } var needToMove = false; if (position.x < 1) { needToMove = true; position.x = 1; } else if (position.x > rzRect.width - position.width - 2) { needToMove = true; position.x = rzRect.width - position.width - 2; } if (position.y < 1) { needToMove = true; position.y = 1; } else if (position.y > rzRect.height - position.height - 2) { needToMove = true; position.y = rzRect.height - position.height - 2; } if (needToMove) sender.moveTo(position.x, position.y); } }
One workaround is to remove nodes that are not visible, e.g., in the Page_Load event: RadNavigation1.Nodes.RemoveAll(x => !x.Visible); Another workaround is to remove the HTML of hidden nodes. Note that this will not affect the nodes collections and they will still be present. Invoking operations or methods on such removed nodes can cause errors. <telerik:RadNavigation runat="server" ID="RadNavigation1" OnClientLoad="OnClientLoad"> <Nodes> <telerik:NavigationNode Text="first"></telerik:NavigationNode> <telerik:NavigationNode Text="second" Visible="false"></telerik:NavigationNode> <telerik:NavigationNode Text="third"></telerik:NavigationNode> </Nodes> </telerik:RadNavigation> <script> function OnClientLoad(sender, args) { var nodes = sender.get_allNodes(); var indicesToRemove = []; for (var i = 0; i < nodes.length; i++) { if (nodes[i].get_element().style.display == "none") { $telerik.$(nodes[i].get_element()).remove(); } } } </script>
Using the set_enabled() method of the NumericTextBox doesn't disable/enable the TextBox properly:
<telerik:RadCheckBox runat="server" ID="CheckBox1" OnClientCheckedChanged="onClientCheckedChanged" Text="Enable/Disable" AutoPostBack="false" />
<telerik:RadNumericTextBox ID="RadNumericTextBox1" runat="server" />
function onClientCheckedChanged(sender, args) {
let numericTextBox = $find("<%= RadNumericTextBox1.ClientID %>");
let isChecked = args.get_checked();
numericTextBox.set_enabled(isChecked);
}