Completed
Last Updated: 19 Mar 2020 14:43 by ADMIN
Release R2 2020 (LIB 2020.1.323)
The end users should not be able to change the checked state of the header when the column is read only.
Completed
Last Updated: 19 Mar 2020 14:43 by ADMIN
Release R2 2020 (LIB 2020.1.323)

Steps to reproduce:

1. Bind RadGridView to BindingList 

2. Clear the rows collection

3. You can see that SelectedRows.Count =1 although Rows.Count = 0

To workaround:

private void radButton1_Click(object sender, EventArgs e)
        {  
            while (this.pedidos.Count > 0)
            {
                this.pedidos.RemoveAt(0);
            }

            int rows = this.radGridView1.Rows.Count;
            int srows = this.radGridView1.SelectedRows.Count;

        }

Unplanned
Last Updated: 24 Feb 2020 06:47 by ADMIN
Created by: Yannis
Comments: 3
Category: GridView
Type: Bug Report
0

Hello,

I am using a radGridView on a Windows touch screen. When I am trying to scroll the rows by hand (EnableKineticScrolling was set to true), the scrolling process is very slow. If I will use the vertical scrollbar, then it is ok. How can I achieve this without using the vertical scrollbar?

I used EnableFastScrolling=true, but I did not see any improvement.

 

Regards,

Yannis

Declined
Last Updated: 28 Jan 2020 09:56 by ADMIN

Please refer to the attached sample project and the follow the steps in the gif file.

Workaround: scroll to the top and then to the bottom again to update the scrollbar's range

Unplanned
Last Updated: 17 Jan 2020 11:23 by ADMIN
Created by: Arun
Comments: 1
Category: GridView
Type: Feature Request
0

Hi, 

I have to transfer data from gridview to a .xlsm file which is for the salary transfer to the bank from the application (Template given by the Bank).

File screenshot attached. 

Need to fill the cells from the loaded gridview to this template.

Please help; I have searched a lot but no luck.

Thank you very much.

 

 

Completed
Last Updated: 02 Jan 2020 12:54 by ADMIN
Release R1 2020

Hi,

 

I am working with the RadGridView in my c# winform application. I am using the custom font ("Font Awesome 5 Free Solid") for the RadGridView using the "CellFormatting" event to view the icons along with the text. Here i am able to see the proper icons with text but when i open the filter menu to filter out the rows, i am unable to see the icons (icons shown as the box) as in filterbox we don't have any custom font

I tried to working out the properties of the RadTreeNodeCollection but here we dont have any Custom font property for the same. 

i want to show the text as it is in the filterbox along with the text and the icon.

so can you suggest what i can do to view the icons in the filterbox?

Check the attachment for reference.

 

Unplanned
Last Updated: 25 Dec 2019 10:40 by ADMIN
Created by: erwin
Comments: 3
Category: GridView
Type: Bug Report
1

Hi,

when I select the column chooser multiple times via context menu, the column chooser dialog scales multiple times.

Reproduced here with the Telerik sample application. 150 % dpi scaling.

Regards

Erwin

Unplanned
Last Updated: 24 Dec 2019 08:39 by ADMIN

I'm just starting with RadGridView and trying to figure out how to create a combobox column inside my RadGridView.  I've added a column that is of type GridViewComboBoxColumn.  I've created a BindingSource that Contains the values for the combobox.  I can't figure out how to set the datasource property of the Column to use that BindingSource.  Google search says to set the datasource property but when I'm going through the "Open Properties Builder"  and I select my combobox column I don't see that property listed under advanced for the column.

Thanks

Lee

Completed
Last Updated: 28 Nov 2019 14:07 by ADMIN
Release R1 2020
Currently when grouping the summary row for each group is shown. The ShowTotals property defines if total summary rows will be shown. Need an option to define if the group summary row will be shown.
Unplanned
Last Updated: 21 Nov 2019 14:32 by ADMIN

If you want to use Conditional Formatting via code (expression based formatting) you will see that it throws an exception if you set TRIM() condition.

ExpressionFormattingObject expressionCondition = new ExpressionFormattingObject(
expressionCondition.Expression = "TRIM(ContactName) = 'Maria Anders'";
expressionCondition.CellBackColor = Color.Aqua;
this.radGridView1.Columns["CustomerID"].ConditionalFormattingObjectList.Add(expressionCondition);

There is no exception if you use the same condition via "Conditional Formatting Rules Manager" form.

Unplanned
Last Updated: 12 Nov 2019 14:54 by ADMIN

Please refer to the attached gif file. You will notice that for the GridViewMaskBoxColumn  with numeric mask the filtering doesn't work. For the other columns each key stroke filters the grid rows.

Workaround: either use a GridViewDecimalColumn or change the default editor for the GridViewMaskBoxColumn :


            this.radGridView1.EditorRequired += radGridView1_EditorRequired; 

        private void radGridView1_EditorRequired(object sender, EditorRequiredEventArgs e)
        {
            if (this.radGridView1.CurrentColumn.HeaderText == "MaskBoxColumn")
            {
                GridSpinEditor spinEditor = new GridSpinEditor();
                RadSpinEditorElement element = spinEditor.EditorElement as RadSpinEditorElement;
                element.ShowUpDownButtons = false;
                e.Editor = spinEditor;
            }
        }

 

 

Declined
Last Updated: 12 Nov 2019 14:52 by ADMIN

Using a custom control using the Telerik Presentation Framework, I am receiving a NullException inside the GridCheckBoxHeaderCellElement during the GridViewElement's data load.

The custom control construction follows an example I found somewhere (reference is lost to me at this point):

ControlContainingGridView inherits from RadControl

CreateChildItems creates and adds ControlContainingGridViewElement

 

ControlContainingGridViewElement inherits from RadElement

CreateChildItems creates and adds some layout controls AND a GridViewElement

 

public partial class ControlContainingGridView : RadControl {
        public ControlContainingGridView() {
            InitializeComponent();
            this.TextChanged += ControlContainingGridView_TextChanged;
        }

        private void ControlContainingGridView_TextChanged(object sender, EventArgs e) {
            controlContainingGridViewElement.Text = this.Text;
        }

        private ControlContainingGridViewElement controlContainingGridViewElement = null;


        protected override void CreateChildItems(RadElement parent) {
            controlContainingGridViewElement = new ControlContainingGridViewElement();
            this.RootElement.Children.Add(controlContainingGridViewElement);
            base.CreateChildItems(parent);
        }

        public object DataSource {
            get {
                return controlContainingGridViewElement.GridView.Template.DataSource;
            }
            set {
                try {
                    controlContainingGridViewElement.GridView.Template.DataSource = value;
                } catch (Exception ex) {
                    Debug.WriteLine(ex);
                }
            }
        }

        internal void SetupColumns(Action<MasterGridViewTemplate> setupColumns) {
            controlContainingGridViewElement.GridView.Template.AutoGenerateColumns = false;
            setupColumns(controlContainingGridViewElement.GridView.Template);
        }



    }

    public class ControlContainingGridViewElement : RadElement {

        private TextPrimitive textPrimitive = null;
        private RadButtonElement addButton = null;
        private RadButtonElement deleteButton = null;
        private RadGridViewElement gridViewElement = null;

        public RadGridViewElement GridView { get { return gridViewElement; } }

        public bool ShowAddButton { get { return addButton.Visibility == ElementVisibility.Visible; } set { addButton.Visibility = value ? ElementVisibility.Visible : ElementVisibility.Collapsed; } }
        public bool ShowDeleteButton { get { return deleteButton.Visibility == ElementVisibility.Visible; } set { deleteButton.Visibility = value ? ElementVisibility.Visible : ElementVisibility.Collapsed; } }

        public string Text { get { return textPrimitive.Text; } set { textPrimitive.Text = value; } }

        protected override void CreateChildElements() {
            DockLayoutPanel dlp = new DockLayoutPanel();
            dlp.StretchHorizontally = true;
            dlp.StretchHorizontally = true;
            dlp.LastChildFill = true;

            DockLayoutPanel dlpBar = new DockLayoutPanel();
            dlpBar.StretchHorizontally = true;
            DockLayoutPanel.SetDock(dlpBar, Dock.Top);


            var imagePrimitive = new ImagePrimitive();
            DockLayoutPanel.SetDock(imagePrimitive, Dock.Left);

            textPrimitive = new TextPrimitive();
            DockLayoutPanel.SetDock(textPrimitive, Dock.Left);

            var slp = new StackLayoutPanel();
            DockLayoutPanel.SetDock(slp, Dock.Right);

            var addButton = new RadButtonElement {
                Text = "Add",
                MaxSize = new Size() { Height = 20 }
            };
            var deleteButton = new RadButtonElement {
                Text = "Del",
                MaxSize = new Size() { Height = 20 }
            };

            slp.Children.Add(addButton);
            slp.Children.Add(deleteButton);


            dlpBar.Children.Add(slp);
            dlpBar.Children.Add(imagePrimitive);
            dlpBar.Children.Add(textPrimitive);



            gridViewElement = new RadGridViewElement {
                StretchHorizontally = true,
                StretchVertically = true
            };
            gridViewElement.Template.AutoSizeColumnsMode = GridViewAutoSizeColumnsMode.Fill;
            gridViewElement.Template.AllowAddNewRow = false;
            gridViewElement.Template.AllowDeleteRow = false;
            gridViewElement.Template.AllowDragToGroup = false;
            gridViewElement.ShowGroupPanel = false;
            gridViewElement.ShowGroupPanelScrollbars = false;

            dlp.Children.Add(dlpBar);
            dlp.Children.Add(gridViewElement);



            this.Children.Add(dlp);
            base.CreateChildElements();
        }

    }

 

During Form load, I programmatically add columns and provide a binding source

 

private List<SampleModel> sampleModels = new List<SampleModel>();
        private BindingSource sampleModelsBinding = new BindingSource();

        private void RadForm1_Load(object sender, EventArgs e) {

            sampleModels.Add(new SampleModel() {
                When = DateTime.Parse("1980-04-23"),
                SomeText = "Purple Bananas",
                IsTrue = true
            });
            sampleModels.Add(new SampleModel() {
                When = DateTime.Parse("2002-07-20"),
                SomeText = "Ball & Chain",
                IsTrue = false
            });
            sampleModelsBinding.DataSource = sampleModels;

            controlContainingGridView.SetupColumns((grid) => {
                grid.AddDateTimeColumn(nameof(SampleModel.When), "When");
                grid.AddTextBoxColumn(nameof(SampleModel.SomeText), "Some Text");
                grid.AddCheckBoxColumn(nameof(SampleModel.IsTrue), "Is True");
            });

            controlContainingGridView.DataSource = sampleModelsBinding;

        }

 

Inclusion of the CheckBox column results in the following error:

Exception thrown: 'System.NullReferenceException' in Telerik.WinControls.GridView.dll

System.NullReferenceException: Object reference not set to an instance of an object.
   at Telerik.WinControls.UI.GridCheckBoxHeaderCellElement.Attach(GridViewColumn data, Object context)
   at Telerik.WinControls.UI.BaseVirtualizedContainer`1.InsertElement(Int32 position, IVirtualizedElement`1 element, T data)
   at Telerik.WinControls.UI.BaseVirtualizedContainer`1.UpdateElement(Int32 position, T data)
   at Telerik.WinControls.UI.BaseVirtualizedContainer`1.MeasureElements()
   at Telerik.WinControls.UI.BaseVirtualizedContainer`1.MeasureOverride(SizeF availableSize)
   at Telerik.WinControls.RadElement.MeasureCore(SizeF availableSize)
   at Telerik.WinControls.RadElement.Measure(SizeF availableSize)
   at Telerik.WinControls.UI.GridVirtualizedRowElement.MeasureElements(SizeF availableSize, SizeF clientSize, Padding borderThickness)
   at Telerik.WinControls.UI.LightVisualElement.MeasureOverride(SizeF availableSize)
   at Telerik.WinControls.UI.GridRowElement.MeasureOverride(SizeF availableSize)
   at Telerik.WinControls.RadElement.MeasureCore(SizeF availableSize)
   at Telerik.WinControls.RadElement.Measure(SizeF availableSize)
   at Telerik.WinControls.UI.VirtualizedStackContainer`1.MeasureElementCore(RadElement element, SizeF availableSize)
   at Telerik.WinControls.UI.ScrollableRowsContainerElement.MeasureElementCore(RadElement element, SizeF availableSize)
   at Telerik.WinControls.UI.VirtualizedStackContainer`1.MeasureElement(IVirtualizedElement`1 element)
   at Telerik.WinControls.UI.PinnedRowsContainerElement.MeasureElement(IVirtualizedElement`1 element)
   at Telerik.WinControls.UI.BaseVirtualizedContainer`1.MeasureElements()
   at Telerik.WinControls.UI.BaseVirtualizedContainer`1.MeasureOverride(SizeF availableSize)
   at Telerik.WinControls.UI.ScrollableRowsContainerElement.MeasureOverride(SizeF availableSize)
   at Telerik.WinControls.RadElement.MeasureCore(SizeF availableSize)
   at Telerik.WinControls.RadElement.Measure(SizeF availableSize)
   at Telerik.WinControls.UI.RowsContainerElement.MeasureOverride(SizeF availableSize)
   at Telerik.WinControls.RadElement.MeasureCore(SizeF availableSize)
   at Telerik.WinControls.RadElement.Measure(SizeF availableSize)
   at Telerik.WinControls.UI.ScrollViewElement`1.MeasureViewElement(SizeF availableSize)
   at Telerik.WinControls.UI.ScrollViewElement`1.MeasureView(SizeF availableSize)
   at Telerik.WinControls.UI.ScrollViewElement`1.MeasureOverride(SizeF availableSize)
   at Telerik.WinControls.UI.GridTableElement.MeasureOverride(SizeF availableSize)
   at Telerik.WinControls.RadElement.MeasureCore(SizeF availableSize)
   at Telerik.WinControls.RadElement.Measure(SizeF availableSize)
   at Telerik.WinControls.Layouts.DockLayoutPanel.MeasureOverride(SizeF constraint)
   at Telerik.WinControls.RadElement.MeasureCore(SizeF availableSize)
   at Telerik.WinControls.RadElement.Measure(SizeF availableSize)
   at Telerik.WinControls.Layouts.ContextLayoutManager.UpdateLayout()
   at Telerik.WinControls.UI.GridVisibilityHelper.EnsureRowVisible(GridViewRowInfo rowInfo)
   at Telerik.WinControls.UI.GridTableElement.EnsureRowVisible(GridViewRowInfo rowInfo)
   at Telerik.WinControls.UI.GridTableElement.EnsureCellVisible(GridViewRowInfo rowInfo, GridViewColumn column)
   at Telerik.WinControls.UI.GridTableElement.UpdateViewCore(Object sender, DataViewChangedEventArgs args)
   at Telerik.WinControls.UI.GridTableElement.UpdateView(Object sender, DataViewChangedEventArgs args)
   at Telerik.WinControls.UI.GridTableElement.ProcessTemplateEvent(GridViewEvent eventData)
   at Telerik.WinControls.UI.GridTableElement.Telerik.WinControls.UI.IGridViewEventListener.ProcessEvent(GridViewEvent eventData)
   at Telerik.WinControls.UI.GridViewEventProcessEntity.ProcessCollection(GridViewEvent gridEvent, PriorityWeakReferenceList list, GridEventProcessMode processMode)
   at Telerik.WinControls.UI.GridViewEventProcessEntity.ProcessEvent(GridViewEvent gridEvent)
   at Telerik.WinControls.UI.GridViewSynchronizationService.NotifyListeners(GridViewEvent gridEvent)
   at Telerik.WinControls.UI.GridViewSynchronizationService.FlushEvents()
   at Telerik.WinControls.UI.GridViewSynchronizationService.DispatchEvent(GridViewEvent gridEvent)
   at Telerik.WinControls.UI.GridViewSynchronizationService.RaiseCurrentChanged(GridViewTemplate template, GridViewRowInfo row, GridViewColumn column, Boolean user)
   at Telerik.WinControls.UI.GridViewTemplate.CollectionView_CurrentChanged(Object sender, EventArgs e)
   at System.EventHandler.Invoke(Object sender, EventArgs e)
   at Telerik.WinControls.Data.RadCollectionView`1.OnCurrentChanged(EventArgs args)
   at Telerik.WinControls.Data.RadCollectionView`1.SetCurrentPositionCore(Int32 newPosition, Boolean forceNotify, CurrentChangeReason reason)
   at Telerik.WinControls.Data.RadListSource`1.InitializeCurrentItem()
   at Telerik.WinControls.Data.RadListSource`1.Initialize()
   at Telerik.WinControls.Data.RadListSource`1.Bind(Object dataSource, String dataMember)
   at Telerik.WinControls.Data.RadListSource`1.set_DataSource(Object value)
   at Telerik.WinControls.UI.GridViewTemplate.set_DataSource(Object value)
   at BugReproduction.ControlContainingGridView.set_DataSource(Object value) in ...\BugReproduction\BugReproduction\ControlContainingGridView.cs:line 42

Completed
Last Updated: 07 Nov 2019 07:03 by ADMIN
ADMIN
Created by: Hristo
Comments: 2
Category: GridView
Type: Bug Report
2
How to reproduce
public partial class Form1 : RadForm
{
    public Form1()
    {
        InitializeComponent();

        GridViewTextBoxColumn textBoxColumn = new GridViewTextBoxColumn();
        textBoxColumn.Name = "Column";
        textBoxColumn.HeaderText = "Column";
        this.radGridView1.MasterTemplate.Columns.Add(textBoxColumn);

        GridViewTextBoxColumn textBoxColumn2 = new GridViewTextBoxColumn();
        textBoxColumn2.Name = "TextBoxColumn2";
        textBoxColumn2.HeaderText = "ReadOnlyColumn";
        this.radGridView1.MasterTemplate.Columns.Add(textBoxColumn2);

        for (int i = 0; i < 10; i++)
        {
            object v = i * 2;
            if (i % 3 == 0)
            {
                v = null;
            }

            this.radGridView1.Rows.Add(new object[] { i, v });
        }

        this.radGridView1.MultiSelect = true;
        foreach (var row in this.radGridView1.Rows)
        {
            foreach (var cell in row.Cells)
            {
                GridViewCellInfo cellInfo = cell as GridViewCellInfo;
                if (cellInfo != null && cellInfo.RowInfo.Index % 3 == 0 && cellInfo.ColumnInfo.Index == 1)
                {
                    cellInfo.ReadOnly = true;
                }
            }
        }
    }

}

Workaround:
public class MyRadGridView : RadGridView
{
    public override string ThemeClassName
    {
        get
        {
            return typeof(RadGridView).FullName;
        }
    }

    protected override RadGridViewElement CreateGridViewElement()
    {
        return new MyRadGridViewElement();
    }
}

internal class MyRadGridViewElement : RadGridViewElement
{
    protected override Type ThemeEffectiveType
    {
        get
        {
            return typeof(RadGridViewElement);
        }
    }

    protected override MasterGridViewTemplate CreateTemplate()
    {
        return new MyMasterGridViewTemplate();
    }
}

internal class MyMasterGridViewTemplate : MasterGridViewTemplate
{
    protected override void PasteDataToRow(List<string> rowData, GridViewRowInfo row)
    {
        {
            int colIndex = this.Owner.CurrentColumn.Index;
            int j = 0;

            while (j < rowData.Count && colIndex < this.CurrentView.ViewTemplate.ColumnCount)
            {
                GridViewColumn col = this.CurrentView.ViewTemplate.Columns[colIndex];
                if (col.IsVisible && !col.ReadOnly && !row.Cells[colIndex].ReadOnly)
                {

                    object value = rowData[j];

                    if (string.IsNullOrEmpty(rowData[j]))
                    {
                        value = null;
                    }
                    else if (this.CurrentView.ViewTemplate.Columns[colIndex].DataType == typeof(string))
                    {
                        GridViewTextBoxColumn textColumn = col as GridViewTextBoxColumn;

                        if (textColumn != null && textColumn.MaxLength > 0)
                        {
                            if (rowData[j].Length > textColumn.MaxLength)
                            {
                                value = rowData[j].Substring(0, textColumn.MaxLength);
                            }
                        }
                    }
                    else if (this.CurrentView.ViewTemplate.Columns[colIndex].DataType == typeof(DateTime))
                    {
                        try
                        {
                            value = DateTime.Parse(rowData[j], this.CurrentView.ViewTemplate.Columns[colIndex].FormatInfo);
                        }
                        catch { }
                    }
                    else if (this.CurrentView.ViewTemplate.Columns[colIndex].DataType == typeof(Color))
                    {
                        try
                        {
                            value = ColorTranslator.FromHtml(rowData[j]);
                        }
                        catch { }
                    }

                    if (this.ClipboardPasteMode == GridViewClipboardPasteMode.EnableWithNotifications)
                    {
                        CellValidatingEventArgs cellValidating = new CellValidatingEventArgs(row, col, value, row.Cells[colIndex].Value, null);
                        this.EventDispatcher.RaiseEvent<CellValidatingEventArgs>(EventDispatcher.CellValidating, this, cellValidating);

                        if (!cellValidating.Cancel)
                        {
                            row.Cells[colIndex].Value = value;

                            CellValidatedEventArgs cellValidated = new CellValidatedEventArgs(row, col, value);
                            this.EventDispatcher.RaiseEvent<CellValidatedEventArgs>(EventDispatcher.CellValidated, this, cellValidated);
                        }
                    }
                    else
                    {
                        row.Cells[colIndex].Value = value;
                    }

                    j++;
                }

                colIndex++;
            }
        }
    }
}


Unplanned
Last Updated: 05 Nov 2019 08:17 by ADMIN

It seems that the GridViewColumnGroup.MinHeight has a big influence on the height of the filter cell.

Workaround:

this.radGridView1.AutoSizeRows = true;

Completed
Last Updated: 18 Oct 2019 08:03 by ADMIN
Release R3 2019 SP1
This way the column could bind to any collection of objects which can be converted to doubles.
Completed
Last Updated: 17 Oct 2019 09:43 by ADMIN
RadGridView can not change the current column (by using the IsCurrent of the desired column) in the CurrentColumnChanged event.
Completed
Last Updated: 14 Oct 2019 10:43 by ADMIN
Release R3 2019 SP1
Add a combo-box column that point to a field with Guid data type, add summary item to this columns as well.

Workaround: 

private void RadGridView1_CreateRowInfo(object sender, GridViewCreateRowInfoEventArgs e)
{
    if (e.RowInfo is GridViewSearchRowInfo)
    {
        e.RowInfo = new MySerachRow(e.ViewInfo);
    }

}
class MySerachRow : GridViewSearchRowInfo
{
    public MySerachRow(GridViewInfo viewInfo) : base(viewInfo)
    {
    }

    public override string GetCellFormattedValue(GridViewRowInfo row, GridViewColumn column)
    {
        if (row is GridViewSummaryRowInfo)
        {
            return "";
        }
        return base.GetCellFormattedValue(row, column);
    }
}
 
Completed
Last Updated: 14 Oct 2019 10:33 by ADMIN
Release R3 2019 SP1

Dear Telerik Support Team,

 

I have a Grid with one level of Hierarchy, I am using also the search row control of Gridview but this control only searches the data in the Parent Grid and not in the child Grid, I am using the version: v.2019.2.618.20 of Telerik controls in the Project. Below is the code snippet which is used in the Project, please let us know how we can search in child grid using the search row of the Gridview.

 

            radgvStockCount.DataSource = dtStockCountHeader
            radgvStockCount.MasterTemplate.EnableHierarchyFiltering = True
            radgvStockCount.UseScrollbarsInHierarchy = True
            radgvStockCount.MasterTemplate.Columns("INVCountHeaderId").IsVisible = False
            radgvStockCount.MasterTemplate.Columns("INVCountNo").HeaderText = "Stock Count No"
            radgvStockCount.MasterTemplate.Columns("CountryCode").HeaderText = "Country Code"
            radgvStockCount.MasterTemplate.Columns("AreaCode").HeaderText = "Area Code"
            radgvStockCount.MasterTemplate.Columns("LocationCode").HeaderText = "Location Code"
            radgvStockCount.MasterTemplate.Columns("LocationName").HeaderText = "Location Name"
            radgvStockCount.MasterTemplate.Columns("CreatedBy").HeaderText = "Opened By"
            radgvStockCount.MasterTemplate.Columns("CreatedDate").HeaderText = "Opened Date"

            Dim template As New GridViewTemplate()
            template.DataSource = dtStockCountBatches
            radgvStockCount.Templates.Add(template)
            template.Columns("INVCountBatchesId").IsVisible = False
            template.Columns("INVCountHeaderId").IsVisible = False
            template.Columns("INVCountNo").HeaderText = "Stock Count No"
            template.Columns("INVCountBatchesNo").HeaderText = "Stock Count Batch No"
            template.Columns("LocationCode").HeaderText = "Location Code"
            template.Columns("LocationName").HeaderText = "Location Name"
            template.Columns("SupervisorQty").HeaderText = "Supervisor Qty"
            template.Columns("CreatedBy").HeaderText = "Batch File Uploaded By"
            template.Columns("CreatedDate").HeaderText = "Uploaded Date"
            template.AllowAddNewRow = False
            template.AllowEditRow = False
            template.AllowDeleteRow = False
            template.AllowSearchRow = False
            template.AllowRowResize = False
            template.EnableFiltering = True
            template.EnableHierarchyFiltering = True
            template.ShowHeaderCellButtons = True
            template.ShowGroupedColumns = True
            template.EnableHierarchyFiltering = True
            template.AutoSizeColumnsMode = GridViewAutoSizeColumnsMode.Fill

            Dim relation As New GridViewRelation(radgvStockCount.MasterTemplate, template)
            relation.RelationName = "StockCountBatches"
            relation.ParentColumnNames.Add("INVCountHeaderId")
            relation.ChildColumnNames.Add("INVCountHeaderId")
            radgvStockCount.Relations.Add(relation)
Unplanned
Last Updated: 14 Oct 2019 06:06 by ADMIN

Please refer to the following code snippet demonstrating how the comparer can be applied:

        public RadForm1()
        {
            InitializeComponent();
            this.radGridView1.EnableFiltering = true;
            this.radGridView1.ShowHeaderCellButtons = true;
            this.radGridView1.FilterPopupInitialized += radGridView1_FilterPopupInitialized; 
        }

        private void radGridView1_FilterPopupRequired(object sender, FilterPopupRequiredEventArgs e)
        {
            RadListFilterPopup popup = e.FilterPopup as RadListFilterPopup;
            if (popup != null)
            { 
                popup.MenuTreeElement.TreeView.TreeViewElement.Comparer = new MyComparer(popup.MenuTreeElement.TreeView.TreeViewElement);
            }
        }

        class MyComparer : TreeNodeComparer
        {
            public MyComparer(RadTreeViewElement treeView)
                : base(treeView)
            {
            }
            public override int Compare(RadTreeNode x, RadTreeNode y)
            {
                if (this.TreeViewElement.SortOrder == SortOrder.Descending)
                {
                    return x.Text.CompareTo(y.Text);
                }
                return x.Text.CompareTo(y.Text) * -1;
            }
        }

Completed
Last Updated: 08 Oct 2019 16:27 by ADMIN
Release R3 2019 SP1

When pressing Enter or Tab in the new row the ParsingDateTime event is fired after the editor is validated. Use attached to reproduce.

 

private void GridView_CellEditorInitialized(object sender, GridViewCellEventArgs e)
{
    var editor = gridView.ActiveEditor as RadDateTimeEditor;
    var editorElement = editor.EditorElement as RadDateTimeEditorElement;
    editorElement.TextBoxElement.MaskType = MaskType.FreeFormDateTime;
    var provider = ((FreeFormDateTimeProvider)editorElement.TextBoxElement.Provider);
    editorElement.TextBoxElement.Provider = new MyFreeFormDateTimeProvider(provider.Mask, provider.Culture, provider.Owner);
}

class MyFreeFormDateTimeProvider : FreeFormDateTimeProvider
{
    public MyFreeFormDateTimeProvider(string mask, CultureInfo culture, RadMaskedEditBoxElement owner) : base(mask, culture, owner)
    {
    }
    public override bool Validate(string stringValue)
    {
        //do your code here
        return base.Validate(stringValue);
    }
}