Last Updated: 18 Oct 2023 11:15 by ADMIN
When using a RadGrid with static headers and grouping, columns and column headers are misaligned 
Last Updated: 18 Sep 2023 07:38 by ADMIN

The submenu with filtering options has elements that overflow the sliding element:

Under Review
Last Updated: 14 Aug 2023 12:37 by ADMIN
When a RadGrid has the "AllowScroll" property set to True and is populated via a DataSourceID, calling the ExportToExcel() method on the grid results in the grid immediately rebinding. This undoes any changes made to the grid, like during the recommended way to export Template columns. When AllowScroll=False, the grid does not rebind and Template columns are exported, as expected.
Last Updated: 18 Jul 2023 07:31 by ADMIN

When EnablePostBackOnRowClick="true" and clicking on the RadAutoCompleteBox inside the EditItemTemplate the Grid will make a PostBack.

This issue does not happen with other elements (span, input, button, etc).

Last Updated: 27 Jun 2023 18:30 by Rathna

ResizeGridOnColumnResize is not working the same way when Grid has StaticHeaders.

I want to resize the grid based on the contents and still be able to scroll with headers.

Last Updated: 25 May 2023 08:22 by Johnny
When scroll inside RadGrid in Chrome on a mobile device or in the DevTools responsive/mobile mode, the browser throws [Intervention] Unable to preventDefault inside passive event listener due to target being treated as passive. See  https://www.chromestatus.com/features/5093566007214080. I get 1 error message for every pixel the grid scrolls. 

The problem is due to jQuery and is reproducible with 1.12.4 and 3.3.1 versions of it.
Last Updated: 07 Apr 2023 14:10 by Mikayel

Applying styles to the rows when exporting to PDF causes the Grid to duplicate the column headers at page breaks.


Last Updated: 30 Mar 2023 09:54 by ADMIN
Created by: Margo Noreen
Comments: 2
Category: Grid
Type: Feature Request

When EnableLinqGrouping is set to True (default) Group Aggregates do not have Case sensitive calculations. 

Last Updated: 03 Feb 2023 09:24 by ADMIN


I have a grid with detail tables.  When the user expands an entry in the parent table, the child table data gets populated via the DetailTableDataBind event.  That's all working properly when things go right.  I'm trying to implement something to address when the detail data retrieval fails.

I've tried setting Cancelled = true in the GridDetailTableBindEventArgs parameter, but that appears to do nothing.

What's even more strange is that if I don't set the value of DetailTableView.DataSource, or I set it to nothing, the value of DetailTableView.DataSource takes on the value of the parent item datasource.  That produces an exception because the parent table doesn't have the columns specified in the detail table DataKeyNames property.  If I clear the DataKeyNames, I can prevent the exception.  But then the child grid shows the parent grid records.

The following is a sample DetailTableDataBind Event:  What can I do to either prevent the parent item from opening, show an empty child item, etc?


Protected Sub rgGrid_DetailTableDataBind(sender As Object, e As GridDetailTableDataBindEventArgs) Handles rgErrorGrid.DetailTableDataBind
        Select Case e.DetailTableView.Name
            Case "DetailTableName"
                Dim dataItem As GridDataItem = TryCast(e.DetailTableView.ParentItem, GridDataItem)
                Dim KeyVal As Integer
                Dim dt As DataTable = Nothing
                If Integer.TryParse(dataItem.GetDataKeyValue("ID").ToString(), KeyVal) Then
                    dt = GetDetailTable(KeyVal)
                End If
                If dt Is Nothing Then
                    ' What do I need to do here to either prevent the parent item from expanding, or show an empty grid...without throwing an exception?
                    e.DetailTableView.DataSource = Nothing
                    e.Canceled = True
                    e.DetailTableView.DataSource = dt
                End If
        End Select
    End Sub

Last Updated: 27 Jan 2023 08:58 by ADMIN
Created by: Imported User
Comments: 4
Category: Grid
Type: Feature Request
Please add support for tags in exported PDF documents. We need these tags for accessibility purposes. Currently, when we export a PDF from a RadGrid, it is created without any tag structure, which can make it difficult for a screen reader to process correctly.
Last Updated: 27 Jan 2023 08:24 by Mauro
Created by: Mauro
Comments: 0
Category: Grid
Type: Bug Report

Resizing a column in the Grid Leads to resizing of the Grid wrapper along with the GroupPanel. The problem can be replicated with the following Resizing settings:

<Resizing AllowColumnResize="true" AllowRowResize="true" EnableRealTimeResize="true" ResizeGridOnColumnResize="false" EnableNextColumnResize="true"/>

The issue occurs only on certain Screen sizes, or when the browser/display has some zoom applied.

Last Updated: 11 Jan 2023 15:43 by n/a

When a big number of items are bound to RadGrid on the server side and Virtualization is enabled paging to the last item is not working as expected.

The problem can be reproduced with the setup in the following demo:

Increasing the number of Customers bound to the Grid to more than 1000000 leads to the problem.

Last Updated: 15 Dec 2022 17:11 by ADMIN
When having at least one hidden column and the AllowColumnResize is set to true, the table cells in the DetailItemTemplate do not get the correct colspan value, hence braking the table structure.
Last Updated: 22 Nov 2022 12:12 by ADMIN
You can workaround this issue with the following CSS rule.

    div.RadGrid .t-font-icon{
        font: 16px/1 "TelerikWebUI";
Last Updated: 20 Sep 2022 11:05 by eDAD
Created by: eDAD
Comments: 0
Category: Grid
Type: Feature Request

When EnableAriaSupport is enabled for the RadGrid, the PagerItem receives role='presentation' and hence is ignored by the screenreaders.

Last Updated: 26 Aug 2022 10:57 by ADMIN
Created by: Viktor Tachev
Comments: 1
Category: Grid
Type: Feature Request

Last Updated: 24 Jun 2022 13:24 by ADMIN
Created by: Wandi
Comments: 5
Category: Grid
Type: Feature Request
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
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.
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


        .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: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">
                    <telerik:GridTemplateColumn HeaderText="rad check box column">
                            <telerik:RadCheckBox runat="server" ID="RadCheckBox1"></telerik:RadCheckBox>
                            <br />
                            <telerik:RadCheckBox runat="server" ID="RadCheckBox2" Checked="true"></telerik:RadCheckBox>
                <Selecting AllowRowSelect="true" />

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";
Last Updated: 23 Jun 2022 13:29 by Claudio
Created by: Claudio
Comments: 0
Category: Grid
Type: Feature Request

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">
        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._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)

                    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)

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

                            if (columnPercent <= scrollPercent && currentScrollPosition != 0) {
                                if (column.FrozenDisplay) {
                            else {
                                if (!column.FrozenDisplay) {


                            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;
                                        lastHiddenColumnIndex = j;
                                if ((prevWidthBeforeLastHidden - notShownSpaceWidth) < notFrozenColumns[notFrozenColumns.length - 1].Width + 25) {
                                    if (scrollPercent < 0.5) {
                                        var nextColumnToHide = notFrozenColumns[notFrozenColumns.length - 1];
                                    } else {
                                        var nextColumnToHide = notFrozenColumns[k];

                        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 = "";
                                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";

                        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;
                    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;
                window.frozenScrollTimeout = setTimeout("Telerik.Web.UI.Grid.frozenScrollHanlder(" + this._frozenScrollCounter + ")", 30);



1 2 3 4 5 6