Completed
Last Updated: 30 Jun 2022 04:09 by ADMIN
ADMIN
Created by: Nikolay
Comments: 3
Category: UI for ASP.NET AJAX
Type: Bug Report
3
Deleting of a table by delete or backspace key does not work when the selection contains only the table.
Steps to reproduce:
1. Set the following content
<p>test p1</p>
<table>
    <tbody>
        <tr>
            <td>test</td>
            <td>test</td>
        </tr>
    </tbody>
</table>
<p>test p2</p>

2. Select the table only and press delete or backspace key

Actual: Only the content has been deleted.
Expected: The table and its content to be deleted.

Workaround:
<telerik:RadEditor ID="RadEditor1" runat="server">
</telerik:RadEditor>

<script type="text/javascript">
	(function () {
		var $T = Telerik.Web.UI;
		var utils = $T.Editor.Utils;

		var isTableSelected = function (selected) {
			if (utils.isTag(selected, "table")) {
				return true;
			}
			var table = utils.getElementParentByTag(selected, "TABLE");
			return table && !!utils.getElementParentByCondition(selected, function (current) {
				return utils.isAncestorOrSelf(table, current) && utils.isSingleChild(current);
			});
		};

		// Fix for delete table by delete or backspace key
		var formatFragments = $T.Editor.DeleteSelectionCommand.prototype.formatFragments;
		$T.Editor.DeleteSelectionCommand.prototype.formatFragments = function (fragments) {
			var cmd = this;
			var selected = cmd.get_editor().getSelectedElement();

			if (isTableSelected(selected) && fragments.length) {
				var table = utils.isTag(selected, "table") ? selected : utils.getElementParentByTag(selected, "TABLE");
				var $table = $telerik.$(table);
				var data = $table.find("th,td");
				var firstCell = data.first().get(0);
				var lastCell = data.last().get(0);
				var firstFragment = fragments[0];
				var lastFragment = fragments[fragments.length - 1];
				var firstSelected = firstFragment.nodes[0];
				var lastSelected = lastFragment.nodes[lastFragment.nodes.length - 1];

				if ((firstSelected == firstCell || firstSelected == firstCell.firstChild || cmd.isMarker(firstCell.firstChild)) &&
					(lastSelected == lastCell || lastSelected == lastCell.lastChild)) {
					$table.find("." + cmd.getMarkersCssClass()).insertBefore(table);
					$telerik.$(table).remove();
					return;
				}
			}
					
			formatFragments.call(cmd, fragments);
		};

		// Fix for select and delete a table by the DomInspector in Chrome
		var Modules = $T.Editor.Modules;
		if (Modules && Modules.RadEditorDomInspector) {
			var removeSelectedElement = Modules.RadEditorDomInspector.prototype.removeSelectedElement;
			Modules.RadEditorDomInspector.prototype.removeSelectedElement = function (element) {
				if (isTableSelected(element)) {
					element = utils.isTag(element, "table") ? element : utils.getElementParentByTag(element, "TABLE");
				}
				removeSelectedElement.call(this, element);
			};
		}
	})();
</script>
Unplanned
Last Updated: 30 Jun 2022 03:05 by Sathiya
Created by: Van
Comments: 1
Category: FileExplorer
Type: Bug Report
2
The folder pane scrolling position is not persisted when the first child folder is selected.
 
 
Steps to reproduce:
1. Open https://demos.telerik.com/aspnet-ajax/fileexplorer/examples/overview/defaultcs.aspx
2. Add several folders to the last node
3. Scroll down to the bottom and select the first child folder of the last node
 
Result: The tree is scrolled to top.
Completed
Last Updated: 29 Jun 2022 12:28 by ADMIN
Release R3 2022

Please follow these steps to reproduce the issue: 1. Open RadEditor Demo: https://demos.telerik.com/aspnet-ajax/editor/examples/overview/defaultcs.aspx 2. Choose a word that is present in the text (e.g. "Barcelona"). 3. Open "Find And Replace" dialog. 4. Click on the "Replace" tab. 5. Write "Barcelona" or any other chosen word in the "Find" field. 6. Write something in the "Replace With" field (e.g. "Replacement"). 7. Select the "Up" Direction in "Search Options". 8. Click "Replace All". Actual Result: The "The search string was not found." message is displayed and the substrings ("Barcelona") are not replaced. Expected Result: All occurrences of the substring are replaced. Note that this functionality seems to be working if the "Down" direction is chosen.

Update: I would like to add that the issue is not only with Replace All. The same bug is happening with "Replace" with both "Up" and Down" directions.

Completed
Last Updated: 29 Jun 2022 09:45 by ADMIN

The execution of the getContextMenuByTagName inside the oncontextmenu event of RadEditor hides the context menu once it is shown. This happens in Lightweight render mode only and when the UseRadContextMenu is enabled:

<telerik:RadEditor ID="RadEditor1" runat="server" ContentAreaMode="iframe" OnClientLoad="OnClientLoad">
    <Content>
        <table>
            <tr>
                <td>test</td>
            </tr>
                <tr>
                <td>test</td>
            </tr>
                <tr>
                <td>test</td>
            </tr>
        </table>
    </Content>
</telerik:RadEditor>
<script>
    function OnClientLoad(editor, args) {
        editor.attachEventHandler("oncontextmenu", function (e) {
            var oSelection = editor.getSelectedElement();

            setTimeout(function () {
                var tdMenu = editor.getContextMenuByTagName("TD"); //the call of getContextMenuByTagName closes the context menu when lightweight render mode is used. You can slow down the closing with the setTimeout function or by settign UseRadContextMenu to false.

            }, 1000);
        });

    }
</script>

Unplanned
Last Updated: 28 Jun 2022 13:15 by Peter

Hi, 

I wanted to implement RadComboBox combined with checkboxes and load on demand approach.

However, this page explained it is not possible and advised to use RadMultiSelect with Virtualization

https://docs.telerik.com/devtools/aspnet-ajax/controls/combobox/functionality/checkbox-support

I checked the page and demo is explained via web service... 

Is there a demo where it would be explained that when I type e.g. 3 characters some function would be called (e.g. OnItemsRequested) and in the server I would call database and fill the required data ? We don't have web service for providing the data... In code-behind we always access databases.

Thanks,

Peter

Completed
Last Updated: 24 Jun 2022 13:56 by ADMIN
Release R3 2022
ADMIN
Created by: Rumen
Comments: 2
Category: Editor
Type: Bug Report
0
"The size of the uploaded file exceeds max size allowed" is thrown even if the file is under the specified maximum upload file size.

The error is reproducible in the Default demo -> http://demos.telerik.com/aspnet-ajax/editor/examples/overview/defaultcs.aspx.

Open the Document manager and upload some unsupported file which size does not exceed 200 kb. For example upload a small image file. You'll get the following error:

The size of the uploaded file exceeds max size allowed.
The extension of the uploaded file is not valid. Please, provide a valid file!

while only this line should be shown: The extension of the uploaded file is not valid. Please, provide a valid file!
Completed
Last Updated: 24 Jun 2022 13:31 by ADMIN
Completed
Last Updated: 24 Jun 2022 13:26 by ADMIN
RadCalendar and RadDatePicker cannot pass the following check by https://achecker.ca/checker/index.php

WCAG 2.0 guideline
Section

1.3 Adaptable: Create content that can be presented in different ways (for example simpler layout) without losing information or structure.
Success Criteria 1.3.1 Info and Relationships (A) 

Check 245: Data table with more than one row/column of headers does not use id and headers attributes to identify cells.

Repair: Add id and headers attributes to table cells so they identify the cells that relate to the headers.

Error Line 597, Column 8:
<table id="ctl00_ContentPlaceholder1_RadDatePicker1_calendar_Top" class="rcMainTable" summary="Table …

Steps to reproduce

Go to https://achecker.ca/checker/index.php

Paste https://demos.telerik.com/aspnet-ajax/datepicker/accessibilityandinternationalization/wcag2.0andsection508accessibility/defaultcs.aspx
or 
https://demos.telerik.com/aspnet-ajax/calendar/accessibility-and-internationalization/wcag-2.0-and-section-508-accessibility/defaultcs.aspx

See the results -> 

Check 245: Data table with more than one row/column of headers does not use id and headers attributes to identify cells.
Repair: Add id and headers attributes to table cells so they identify the cells that relate to the headers.
Error Line 568, Column 8:
<table id="ctl00_ContentPlaceholder1_RadDatePicker1_calendar_Top" class="rcMainTable" summary="Table ...


=======================================

WORKAROUND:

$telerik.$("table.rcMainTable tbody th").each(function (idx, el) {
    var thId = $telerik.$(el).attr("id");
    $telerik.$(el).siblings("td").attr("header", thId);
})

Completed
Last Updated: 24 Jun 2022 13:24 by ADMIN
Created by: Wandi
Comments: 5
Category: Grid
Type: Feature Request
1
There are more than 30 items (including task title) in RadGrid Task
I can't see Edit Template because my display resolution is not enough to show all Tasks.
I always get this problem with small resolution monitor.
Can you make it collapsible?
How do I go to EditTemplate? The task is not in the screen
Completed
Last Updated: 24 Jun 2022 13:18 by ADMIN
http://screencast.com/t/CySy2iAoiG4n
Completed
Last Updated: 24 Jun 2022 13:09 by ADMIN
Completed
Last Updated: 24 Jun 2022 13:06 by ADMIN
ADMIN
Created by: Vessy
Comments: 0
Category: Splitter
Type: Bug Report
1
The print preview resulted by the Splitter's print() method appears blank in Chrome in case there are CSS files passed as an argument to method.

Steps to reproduce:
1. Open http://demos.telerik.com/aspnet-ajax/splitter/examples/printpane/defaultcs.aspx in Chrome
2. Click in the "Print LeftPane" button


Result: An empty print-preview window is shown.
Completed
Last Updated: 24 Jun 2022 12:56 by ADMIN
Completed
Last Updated: 24 Jun 2022 12:52 by ADMIN
ADMIN
Created by: Marin Bratanov
Comments: 0
Category: Gauge
Type: Bug Report
1
There are some issues with the appearance of the gauges in RTL mode. They vary across browsers.

An easy fix is to add a CSS class to each of them and force direction: ltr:

<telerik:RadRadialGauge CssClass="rtlFix" ID="radialGauge1" runat="server" Width="272px" Height="272px">
    . . . . .
</telerik:RadRadialGauge>

.rtlFix
{
    direction: ltr;
}

If you need to swap the places of the min and max value the Reverse property of the Scale inner tag must be set to true.
Declined
Last Updated: 24 Jun 2022 11:32 by ADMIN
The default focus in the dialog should provide a meaningful action if enter is pressed. The Ignore button would be one such. If you feel like another button/element should have the default focus, share your comments. You can find attached a sample that provides tabIndexes and default focus. This improvement is related to http://feedback.telerik.com/Project/108/Feedback/Details/126937
Declined
Last Updated: 24 Jun 2022 11:32 by ADMIN
It would be convenient to be able to specify default values for SortAscImageURL and SortDescImageURL at a level above the individual column elements

At present the SortAscImageURL and SortDescImageURL attributes appear in the GridBoundColumn element.  This requires specifying them for each column definition.  Often the UI will use the same icons for all sort-able columns.
An obvious choice might be the <SortingSettings> element, as is done for the sorting tool tip and sorted background color.
Declined
Last Updated: 24 Jun 2022 11:29 by ADMIN
The current implementation of RadHtmlChart explicitly specifies font-family and font-size settings on the server-side, which are then serialized and used by the Kendo widget, so the skin-specific settings are ignored.

For example, the Material skin should define a "Roboto" font-family, but this is overriden by "Arial" in the final serialization, so the skin configuration does not have any effect.

The default values of the server-side font settings can be removed in order to allow such customization and can be defined in the skins file instead.
Completed
Last Updated: 24 Jun 2022 11:21 by ADMIN
It becomes hard to see the checked checkboxes because of the selected color it has by default matches the select color of the grid

Solution:

        .RadGrid_BlackMetroTouch .rgSelectedRow .RadCheckBox.RadButton_BlackMetroTouch .rbToggleCheckboxChecked::before,
        .RadGrid_Bootstrap .rgSelectedRow .RadCheckBox.RadButton_Bootstrap .rbToggleCheckboxChecked::before,
        .RadGrid_Metro .rgSelectedRow .RadCheckBox.RadButton_Metro .rbToggleCheckboxChecked::before,
        .RadGrid_MetroTouch .rgSelectedRow .RadCheckBox.RadButton_MetroTouch .rbToggleCheckboxChecked::before {
            color: white;
        }

        .RadGrid_Glow .rgSelectedRow .RadCheckBox.RadButton_Glow .rbToggleCheckboxChecked::before,
        .RadGrid_Office2010Black .rgSelectedRow .RadCheckBox.RadButton_Office2010Black .rbToggleCheckboxChecked::before,
        .RadGrid_Telerik .rgSelectedRow .RadCheckBox.RadButton_Telerik .rbToggleCheckboxChecked::before,
        .RadGrid_WebBlue .rgSelectedRow .RadCheckBox.RadButton_WebBlue .rbToggleCheckboxChecked::before {
            color: black;
        }

Sample to reproduce the behavior and compare the default colors in other states/cases:

        <telerik:RadCheckBox runat="server" ID="rcb1"></telerik:RadCheckBox>
        <br />
        <telerik:RadCheckBox runat="server" ID="rcb2" Checked="true"></telerik:RadCheckBox>
        <telerik:RadSkinManager runat="server" ID="RadSkinManager1" Skin="Bootstrap" ShowChooser="true">
        </telerik:RadSkinManager>
        <telerik:RadFormDecorator ID="RadFormDecorator1" runat="server" DecoratedControls="All" RenderMode="Lightweight" />
        <asp:CheckBox ID="Checkbox1" Text="some checkbox" runat="server" />
        <telerik:RadGrid ID="RadGrid1" runat="server" OnNeedDataSource="RadGrid1_NeedDataSource" RenderMode="Lightweight">
            <MasterTableView>
                <Columns>
                    <telerik:GridClientSelectColumn></telerik:GridClientSelectColumn>
                    <telerik:GridTemplateColumn HeaderText="rad check box column">
                        <ItemTemplate>
                            <telerik:RadCheckBox runat="server" ID="RadCheckBox1"></telerik:RadCheckBox>
                            <br />
                            <telerik:RadCheckBox runat="server" ID="RadCheckBox2" Checked="true"></telerik:RadCheckBox>
                        </ItemTemplate>
                    </telerik:GridTemplateColumn>
                </Columns>
            </MasterTableView>
            <ClientSettings>
                <Selecting AllowRowSelect="true" />
            </ClientSettings>
        </telerik:RadGrid>

And a dummy data source that is not a good data source in general, but it will suffice to get this running so one can observe

    protected void RadGrid1_NeedDataSource(object sender, GridNeedDataSourceEventArgs e)
    {
        (sender as RadGrid).DataSource = "abcdef";
    }
Unplanned
Last Updated: 23 Jun 2022 13:29 by Claudio
Created by: Claudio
Comments: 0
Category: Grid
Type: Feature Request
0

With a lot of columns, in some cases, the latest column is clipped in a zoomed OS. For example, resolution 1920x1080 and the scale is 150% or 3840 x 2160 and the 150% scale.

 

 

Adding the following script somewhere after the ScriptManager(e.g. near the closing </form> or </body> tag) can improve the experience with zoomed scenarios:

<telerik:RadCodeBlock ID="RadCodeBlock2" runat="server">
    <script>
        if (Telerik && (Telerik.Web.Browser.chrome || Telerik.Web.Browser.edgeChromium) && Telerik.Web.UI.GridScrolling) {
            Telerik.Web.UI.GridScrolling.prototype.onGridFrozenScroll = function (args) {
                if (!this._frozenScrollCounter) {
                    this._frozenScrollCounter = 0;
                }

                this._frozenScrollCounter++;
                this._needToUpdateClientState = false;

                var gridControl = this;

                gridControl._currentElement = Telerik.Web.UI.Grid.GetCurrentElement(args);

                Telerik.Web.UI.Grid.frozenScrollHanlder = function (count) {
                    var operaVersion = 10.00;

                    if ($telerik.isOpera) {
                        operaVersion = navigator.userAgent.substring(navigator.userAgent.indexOf("Version/") + "Version".length + 1) * 1;
                    }
                    if (gridControl._frozenScrollCounter != count || gridControl._owner._isResize)
                        return;

                    if (!gridControl._lastScrollIndex) {
                        gridControl._lastScrollIndex = 0;
                    }
                    var masterTableView = gridControl._owner.get_masterTableView();
                    var masterTableViewHeader = gridControl._owner.get_masterTableViewHeader();

                    var currentElement = gridControl._currentElement;

                    if (gridControl._owner.ClientSettings.Scrolling.FrozenColumnsCount > masterTableViewHeader.get_columns().length) {
                        gridControl.isFrozenScroll = false;
                    }
                    var column, i;
                    if (gridControl.isFrozenScroll) {
                        var notFrozenColumns = gridControl._getNotFrozenColumns();

                        var scrollPercent = 0;
                        var notShownSpaceWidth = -1;

                        var currentElementWidthDiff = currentElement.scrollWidth - currentElement.offsetWidth;

                        if ((currentElementWidthDiff) != 0)
                            notShownSpaceWidth = currentElementWidthDiff;

                        scrollPercent = currentElement.scrollLeft / notShownSpaceWidth;

                        if (scrollPercent < 0)
                            scrollPercent = -1 * scrollPercent;

                        if (scrollPercent > 1)
                            scrollPercent = 1;

                        if (Telerik.Web.UI.Grid.IsRightToLeft(gridControl._owner.GridHeaderDiv) && ($telerik.isSafari || $telerik.isIE7))
                            scrollPercent = 1 - scrollPercent;

                        var gridColumns = masterTableView.get_columns();

                        var currentScrollPosition = currentElement.scrollLeft;
                        i = 0;
                        while (i < notFrozenColumns.length)//always show the last column
                        {
                            column = notFrozenColumns[i];

                            var prerviousForzenDisplayWidth = notFrozenColumns._getPreviousNotFrozenColumnWidth(column.Index);

                            if ((currentElementWidthDiff) < 0)
                                break;

                            var columnPercent = (column.Width + prerviousForzenDisplayWidth - 50) / notShownSpaceWidth; 

                            if (columnPercent <= scrollPercent && currentScrollPosition != 0) {
                                if (column.FrozenDisplay) {
                                    masterTableViewHeader._hideNotFrozenColumn(column.Index);
                                }
                            }
                            else {
                                if (!column.FrozenDisplay) {
                                    masterTableViewHeader._showNotFrozenColumn(column.Index);
                                }
                            }

                            i++;

                            if (i == (notFrozenColumns.length - 1)) {
                                var prevWidthBeforeLastHidden = 0;
                                var lastHiddenColumnIndex = 0;
                                var k = 0;
                                for (var j = 0; j < gridColumns.length - 1; j++) {
                                    if (typeof (gridColumns[j].FrozenDisplay) == 'boolean' && !gridColumns[j].FrozenDisplay) {
                                        prevWidthBeforeLastHidden += notFrozenColumns[k].Width;
                                        k++;
                                        lastHiddenColumnIndex = j;
                                    }
                                }
                                if ((prevWidthBeforeLastHidden - notShownSpaceWidth) < notFrozenColumns[notFrozenColumns.length - 1].Width + 25) {
                                    if (scrollPercent < 0.5) {
                                        var nextColumnToHide = notFrozenColumns[notFrozenColumns.length - 1];
                                        masterTableViewHeader._hideNotFrozenColumn(nextColumnToHide.Index);
                                    } else {
                                        var nextColumnToHide = notFrozenColumns[k];
                                        masterTableViewHeader._hideNotFrozenColumn(nextColumnToHide.Index);
                                    }
                                }
                            }
                        }

                        gridControl._afterColumnFreeze(masterTableView, masterTableViewHeader, scrollPercent);

                        if (scrollPercent > 0.9999 && $telerik.isFirefox) {
                            masterTableViewHeader.get_element().style.width = masterTableViewHeader.get_element().offsetWidth + "px";
                            masterTableViewHeader.get_element().style.tableLayout = "auto";
                            masterTableViewHeader.get_element().style.tableLayout = "fixed";

                            masterTableView.get_element().style.width = masterTableViewHeader.get_element().offsetWidth + "px";
                            masterTableView.get_element().style.tableLayout = "auto";

                            masterTableViewHeader.get_element().style.tableLayout = "";
                            setTimeout(
                                function () {
                                    if ($telerik.isFirefox && Sys.Browser.version >= 4)
                                        masterTableView.get_element().style.tableLayout = "fixed";
                                    masterTableViewHeader.get_element().style.tableLayout = "auto";
                                    masterTableViewHeader.get_element().style.tableLayout = "fixed";
                                },
                                100);
                        }

                        if (gridControl._owner.get_masterTableViewFooter()) {

                            gridControl._owner.get_masterTableViewFooter().get_element().style.width = masterTableViewHeader.get_element().offsetWidth + "px";
                            gridControl._owner.get_masterTableViewFooter().get_element().style.tableLayout = "auto";
                            gridControl._owner.get_masterTableViewFooter().get_element().style.tableLayout = "fixed";
                        }

                    }
                    else {
                        gridControl._owner.GridDataDiv.scrollLeft = currentElement.scrollLeft;
                    }

                    /////////////////////////////////////
                    gridControl._frozenScrollCounter = 0;
                    gridControl._needToUpdateClientState = true;
                    //gridControl._owner.updateClientState();
                    setTimeout(Telerik.Web.UI.Grid._clientStateUpdater, 500);

                    if (gridControl._owner.get_events().getHandler("scroll")) {
                        gridControl._owner.raise_scroll(new Telerik.Web.UI.GridScrollEventArgs(gridControl._currentElement));
                    }
                };

                Telerik.Web.UI.Grid._clientStateUpdater = function () {
                    if (gridControl._needToUpdateClientState) {
                        gridControl._needToUpdateClientState = false;
                        gridControl._owner.updateClientState();
                    }
                };
                clearTimeout(window.frozenScrollTimeout);
                window.frozenScrollTimeout = setTimeout("Telerik.Web.UI.Grid.frozenScrollHanlder(" + this._frozenScrollCounter + ")", 30);

            }

        }
    </script>
</telerik:RadCodeBlock>

1 2 3 4 5 6