Using an ampersand character in RadBarcode's Text leads to a server-side error. Replacing the symbol with its corresponding HTML entity allows the control to render its text successfully, but the generated image corresponds to the passed entity character.
If RadBarcode1.Text="&" the control generates this (read as "&"):
https://www.screencast.com/t/NuOVjB8EY
while it should be this (read as "&"):
https://www.screencast.com/t/vOhWkUoW
Workaround:
When we generate the image by keeping ShowText = True, then it throws the exception.
When we generate the image by keeping ShowText = false, then it successfully generates the image.
Steps to reproduce:Run the following setup:
ASPX:<
telerik:RadGrid
ID
=
"RadGrid1"
runat
=
"server"
>
<
MasterTableView
>
<
Columns
>
<
telerik:GridClientDeleteColumn
CommandName
=
"Delete"
ButtonType
=
"LinkButton"
></
telerik:GridClientDeleteColumn
>
</
Columns
>
</
MasterTableView
>
<
ClientSettings
>
<
ClientEvents
OnCommand
=
"OnCommand"
/>
</
ClientSettings
>
</
telerik:RadGrid
>
function
OnCommand(sender, args) {
}
Workaround 1) Use .resx files as the attached ones Workaround 2) Set properties to ViewState RadMonthYearPicker1.MonthYearNavigationSettings.ViewState["_mCancelButtonCaption"] = "my cancel"; RadMonthYearPicker1.MonthYearNavigationSettings.ViewState["_mTodayButtonCaption"] = "my today"; RadMonthYearPicker1.MonthYearNavigationSettings.ViewState["_mOkButtonCaption"] = "my ok";
Images that reside in the grid will get resized (scaled down with about 3-5 %) which might cause issues, specially if exporting bar-codes, thus the bar-code scanners won't be able to read them. Current workaround is to use the Telerik Documents Processing Library and build the table manually where the images are inserted without changing the size. Here is an example: protected void RadGrid1_InfrastructureExporting(object sender, GridInfrastructureExportingEventArgs e) { Telerik.Web.UI.ExportInfrastructure.Table table = e.ExportStructure.Tables[0]; Workbook workbook = new Workbook(); workbook.Worksheets.Add(); Worksheet worksheet = workbook.ActiveWorksheet; foreach (var row in table.Rows) { if (row.Index > 1) { worksheet.Rows[row.Index - 1].SetHeight(new RowHeight(55, true)); } foreach (var cell in row.Cells) { if (row.Index == 1 || cell.ColIndex != 2) { worksheet.Cells[cell.Index.Y - 1, cell.Index.X - 1].SetValue(cell.Value.ToString()); } else { FloatingImage image = new FloatingImage(worksheet, new CellIndex(cell.Index.Y - 1, cell.Index.X - 1), 0, 0); Stream stream = File.Open(Server.MapPath(cell.Value.ToString()), FileMode.Open); using (stream) { image.ImageSource = new Telerik.Windows.Documents.Media.ImageSource(stream, "jpg"); } worksheet.Shapes.Add(image); } } } byte[] data; using (MemoryStream ms = new MemoryStream()) { XlsxFormatProvider xlsProvider = new XlsxFormatProvider(); xlsProvider.Export(workbook, ms); data = ms.ToArray(); } Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"; Response.Headers.Remove("Content-Disposition"); Response.AppendHeader("Content-Disposition", "attachment; filename=" + RadGridLista.ExportSettings.FileName + ".xlsx"); Response.BinaryWrite(data); Response.End(); }
If AllowPaging, AllowScroll and UseStaticHeaders are set to true, then there will be 2 empty <th> elements workaround: <ClientSettings> ... <ClientEvents OnGridCreated="OnGridCreated" /> </ClientSettings> <script> function OnGridCreated(sender, args) { var emptyth = $telerik.$(sender.get_element()) .find("th").filter(function (ind, item) { return item.textContent == "" }); // alert(emptyth.length) emptyth.append("<span style='display:none'>Hidden empty table header</span>") } </script>
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)
Repro steps: - use the editor below and the attached Word document in the archive at the end - copy the document content in the editor - clean the word formatting - select some of the content (e.g., one paragraph) - click the format stripper dropdown and choose Strip Span Elements - run get_html(true) in the console Expected: spans are stripped only from the selected content Actual: nothing is stripped. Changing to HTML mode and back to Design fixes this, so you should not use that to check the HTML <telerik:RadEditor RenderMode="Lightweight" runat="server" ID="RadEditor1"> <Tools> <telerik:EditorToolGroup> <telerik:EditorTool Name="FormatStripper" /> </telerik:EditorToolGroup> </Tools> </telerik:RadEditor> WORKAROUNDS: For the majority of cases you can set up automatic stripping of span elements when pasting from Word, so your users do not need to do that themselves. Here is an example: <telerik:RadEditor RenderMode="Lightweight" runat="server" ID="RadEditor1" StripFormattingOptions="ConvertWordLists, MSWordNoMargins, Span"> <Tools> <telerik:EditorToolGroup> <telerik:EditorTool Name="FormatStripper" /> </telerik:EditorToolGroup> </Tools> </telerik:RadEditor> You can read more on how stripping MS Word content works in the following demo, and play around with the various options to see what works best for your case: http://demos.telerik.com/aspnet-ajax/editor/examples/cleaningwordformatting/defaultcs.aspx and in the following documentation article: https://docs.telerik.com/devtools/aspnet-ajax/controls/editor/managing-content/pasting-content/clean-ms-word-formatting There are also two possible code workarounds so advanced users can retain more control over the HTML without switching to the HTML mode themselves. The second is likely to be a tad faster with large content, but the first is likely to produce better user experience. 1) this changes the mode to HTML and back to design with each paste so that the stripping tool can work with the selection <telerik:RadEditor RenderMode="Lightweight" runat="server" ID="RadEditor1" OnClientCommandExecuted="OnClientCommandExecuted"> <Tools> <telerik:EditorToolGroup> <telerik:EditorTool Name="FormatStripper" /> </telerik:EditorToolGroup> </Tools> </telerik:RadEditor> <script> function OnClientCommandExecuted(sender, args) { if (args.get_commandName() == "Paste") { sender.set_mode(2); setTimeout(function () { sender.set_mode(1); }, 50); } } </script> 2) this one is a workaround that allows the stripping tool to work without mode change, but it will not operate with the selection but with all the content <telerik:RadEditor RenderMode="Lightweight" runat="server" ID="RadEditor1" OnClientCommandExecuting="OnClientCommandExecuting"> <Tools> <telerik:EditorToolGroup> <telerik:EditorTool Name="FormatStripper" /> </telerik:EditorToolGroup> </Tools> </telerik:RadEditor> <script> function OnClientCommandExecuting(sender, args) { if (args.get_commandName() == "StripSpan") { sender.set_html(sender.get_html(true)); } } </script>
We have a RadGrid, which has a set of columns, lets say C1 to CN. Some of those columns are invisible and can be made visible with the Columns context menu, your control provides. Assume a column Ci, that is not visible now. If there exists a visible column Cx with x > i, your control works as expected. The column spans of the headline are ok. See GoodCase_Step.jpg If there is no visible column Cx with x > i and Ci is switched visible, your column spans within the headline become completely invalid. See BadCase.jpg_Step.jpg We use Version 2017.3.913.45 of your library. Thanks for your Support!
When adding formatting to texts while selecting whole elements, some elements are not included in `isBlockElement` function such as <col> or <colgroup> in a way those elements get wrapped in formatting tags such as <strong> How to Reproduce: Create a table in editor ```html <span>Outside text</span> <table> <colgroup> <col></col> </colgroup> <tbody> <tr> <td>Inside text</td> </tr> </tbody> </table> ``` Select the inside text and outsite text in editor and click for applyng BOLD for instance. colgroup tag gets wrapped in <strong> tags. Some of html5 tags are missing from the isblockelement check as well such as 'article', 'aside', 'audio', 'canvas', 'details', 'figcaption', 'figure', 'footer', 'header', 'hgroup', 'nav', 'output', 'section', 'video'
The full stract trace of the error can be found in the attached file.
I have a RadGrid with several thousand elements on it. In attempting to improve performance, the Visual Studio profiler informed me that it spent more than half of the request in PopulatePlainPanels checking whether something was in a list. (see attached before.png) I changed the type of the variable plainPanelsClientIDs in RadAjaxControl.cs to be a HashSet<string> instead of a List<string>. As a knock-on effect, I had to import System.Linq into RadAjaxManager.cs to get the .toArray() call to work. The result in the attached after.png shows the percentage of execution time dropped from 55% to 3%. I'd appreciate it if the team would evaluate this change for inclusion in future releases. Note 1: I have not done extensive testing on this, so I don't know what might break. The variable isn't referenced much, so the only thing I'm suspicious of is reflection, which I didn't check for and don't expect. Note 2: If importing Linq is undesirable, a more manual conversion to an array can be done pretty easily. Note 3: plainPanelsClientIDs is .add() 'ed to in two places, and both check for membership before being called. This shouldn't be necessary for a HashSet, which simply doesn't add if it's there. This seems a very minor improvement, but I didn't actually try it yet.
The date pickers default to the year 1999 and do not accept inputs, so you cannot filter GridDateTimeColumn instances through the header context menu or the excel-like filtering. The standard filter item and range filter can still be used instead of context menus, but they are not available with excel-like filtering.
ISSUE: Screenshot of this issue can be seen at https://goo.gl/c9WriW Also, a video of this can be seen at https://goo.gl/d4nnKq This issue occurs in Lightweight or Mobile render mode. In classic render mode, this issue does not exist. HOW TO REPRODUCE: Use the following page markup to reproduce this problem. <%@ Page Language="C#" AutoEventWireup="true" %> <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title></title> </head> <body> <form id="form1" runat="server"> <telerik:RadScriptManager ID="RadScriptManager1" runat="server"> <Scripts> <asp:ScriptReference Assembly="Telerik.Web.UI" Name="Telerik.Web.UI.Common.Core.js"></asp:ScriptReference> <asp:ScriptReference Assembly="Telerik.Web.UI" Name="Telerik.Web.UI.Common.jQuery.js"></asp:ScriptReference> <asp:ScriptReference Assembly="Telerik.Web.UI" Name="Telerik.Web.UI.Common.jQueryInclude.js"></asp:ScriptReference> </Scripts> </telerik:RadScriptManager> <telerik:RadSkinManager ID="RadSkinManager1" runat="server" ShowChooser="true" RenderMode="Lightweight" Skin="MetroTouch"> <TargetControls> <telerik:TargetControl ControlID="RadFormDecorator1" /> </TargetControls> </telerik:RadSkinManager> <telerik:RadFormDecorator ID="RadFormDecorator1" runat="server" DecoratedControls="All" RenderMode="Lightweight" ControlsToSkip="None" /> <select id="ddl2" runat="server" style="width: 175px;"> <option value=""></option> <option value="dallas">Dallas</option> <option value="chicago">Chicago</option> <option value="toronto">Toronto</option> <option value="austin">Austin</option> </select> <button id="btn1">Postback</button> </form> </body> </html> RESOLUTION: Add the following style in your aspx head part based on the skin you are using for FormDecorator. If skin is any one these big skins - MetroTouch or BlackMetroTouch or Material or Silk or Glow or Bootstrap, then use the style below. <style> div.rfdSelectBox ul li { min-height: 16px; } .rfdSelect { min-height: 32px !important; } </style> For all other skins, use the style element as below. <style> div.rfdSelectBox ul li { min-height: 16px; } .rfdSelect { min-height: 32px; } </style> </head>
ISSUE: Screenshot of this issue can be seen at https://goo.gl/F8C73V. This issue occurs in classic render mode when an option has long text that gets truncated instead of being wrapped. HOW TO REPRODUCE: Use the following page code to reproduce it. Expand the drop down and notice that the option just after None is truncated and not wrapped. <%@ Page Language="C#" AutoEventWireup="true"%> <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title></title> </head> <body> <form id="form1" runat="server"> <telerik:RadScriptManager ID="RadScriptManager1" runat="server"> <Scripts> <asp:ScriptReference Assembly="Telerik.Web.UI" Name="Telerik.Web.UI.Common.Core.js"></asp:ScriptReference> <asp:ScriptReference Assembly="Telerik.Web.UI" Name="Telerik.Web.UI.Common.jQuery.js"></asp:ScriptReference> <asp:ScriptReference Assembly="Telerik.Web.UI" Name="Telerik.Web.UI.Common.jQueryInclude.js"></asp:ScriptReference> </Scripts> </telerik:RadScriptManager> <telerik:RadSkinManager ID="RadSkinManager1" runat="server" ShowChooser="true" RenderMode="Classic" Skin="MetroTouch"> <TargetControls> <telerik:TargetControl ControlID="RadFormDecorator1" /> </TargetControls> </telerik:RadSkinManager> <telerik:RadFormDecorator ID="RadFormDecorator1" runat="server" DecoratedControls="All" RenderMode="Classic" ControlsToSkip="None" /> <select id="dd1" style="width: 200px;"> <option value="none">None</option> <option value="volvo">Volvo sdsd sdsd ddsds sddsd dsdsd sdds sdsd sdsdsd sdsd sds ddsd xyz</option> <option value="saab">Saab</option> <option value="mercedes">Mercedes</option> <option value="audi">Audi</option> </select> <button id="btn1">Postback</button> </form> </body> </html> RESOLUTION: Put the following style in head part of your aspx page. This will fix this issue. <style> div.rfdSelectBox ul li { height: unset; height: none;/*for ie and edge*/ height: auto; } </style>
ISSUE: Screenshot of this issue can be seen at : (1) https://goo.gl/knpdiq (2) and also at https://goo.gl/8tDqKe. The issue is that the drop down width is not matching the width of top part when a select element is styled by FormDecorator. I am using the latest version i.e. 2017.3 913. HOW TO REPRODUCE: Go to the demo page of FormDecorator at http://demos.telerik.com/aspnet-ajax/formdecorator/examples/overview/defaultcs.aspx. Expand the only select element on this demo page and you will notice that drop down width is not matching the top part width. RESOLUTION: When I tried to resolve this problem, I came up with a solution that works across all skins and render modes as well as all modern browsers of Chrome, Firefox, Opera, Edge + IE 9,10 and 11. The solution involves overriding the method Telerik.Web.UI.RadFormDecorator.prototype._expandHeader. JavaScript for overriding this method is given in attached file. Just copy this script and paste in anywhere in your aspx page to resolve this issue.
Problem with simple excel behavior. In excel when you type a string longer than the cell, text is not clipped and shows over other cells. Then, if you fill adjacent cell, text is then clipped. I've been able to mimic this behaviour using this css: .RadSpreadsheet .rssPane .k-spreadsheet-cell { overflow: visible !important; } But then, If you highlite those cells with background color the text is again clipped. The background color wipe the text. Attached is a small png to show the problem. Please fix this to work as excel. Users are complaining non stop. Thanks.
When selecting an item with Enter key, the rawEvent propagation is not canceled and if a button with submit behavior is on the page, it is clicked. https://www.screencast.com/t/sGVXL2baFj Including this script to the page can be a temporary workaround: var _onEnterKeyOld = Telerik.Web.UI.RadComboBox.prototype._onEnterKey; Telerik.Web.UI.RadComboBox.prototype._onEnterKey = function (e) { _onEnterKeyOld.call(this,e); e.preventDefault() }