Approved
Last Updated: 19 Mar 2019 10:29 by ADMIN
ADMIN
Created by: Dess | Tech Support Engineer, Sr.
Comments: 2
Category: GridView
Type: Bug Report
4
To reproduce: use the following code snippet, save the layout and load it afterwards. You will notice that only the master and the first child template are successfully loaded.

public Form1()
{
    InitializeComponent();
    DataTable dt = new DataTable();
    dt.Columns.Add("Id", typeof(int));
    dt.Columns.Add("Name", typeof(string));
    for (int i = 0; i < 5; i++)
    {
        dt.Rows.Add(i, "Parent" + i);
    }

    this.radGridView1.MasterTemplate.DataSource = dt;
    this.radGridView1.MasterTemplate.AutoSizeColumnsMode = Telerik.WinControls.UI.GridViewAutoSizeColumnsMode.Fill;

    //child level 1
    GridViewTemplate template = new GridViewTemplate();
    template.DataSource = GetData(5, 20, 0, 5);
    template.AutoSizeColumnsMode = GridViewAutoSizeColumnsMode.Fill;
    radGridView1.MasterTemplate.Templates.Add(template);

    GridViewRelation relation = new GridViewRelation(radGridView1.MasterTemplate);
    relation.ChildTemplate = template;
    relation.RelationName = "ParentChild";
    relation.ParentColumnNames.Add("Id");
    relation.ChildColumnNames.Add("ParentId");
    radGridView1.Relations.Add(relation);

    //child level 2
    GridViewTemplate template2 = new GridViewTemplate();
    template2.DataSource = GetData(20, 40, 5, 20);
    template2.AutoSizeColumnsMode = GridViewAutoSizeColumnsMode.Fill;
    template.Templates.Add(template2);

    GridViewRelation relation2 = new GridViewRelation(template);
    relation2.ChildTemplate = template2;
    relation2.RelationName = "ParentChild";
    relation2.ParentColumnNames.Add("Id");
    relation2.ChildColumnNames.Add("ParentId");
    radGridView1.Relations.Add(relation2);

    //child level 3
    GridViewTemplate template3 = new GridViewTemplate();
    template3.DataSource = GetData(40, 100, 20, 40);
    template3.AutoSizeColumnsMode = GridViewAutoSizeColumnsMode.Fill;
    template2.Templates.Add(template3);

    GridViewRelation relation3 = new GridViewRelation(template2);
    relation3.ChildTemplate = template3;
    relation3.RelationName = "ParentChild";
    relation3.ParentColumnNames.Add("Id");
    relation3.ChildColumnNames.Add("ParentId");
    radGridView1.Relations.Add(relation3);

    //child level 4
    GridViewTemplate template4 = new GridViewTemplate();
    template4.DataSource = GetData(100, 200, 40, 100);
    template4.AutoSizeColumnsMode = GridViewAutoSizeColumnsMode.Fill;
    template3.Templates.Add(template4);

    GridViewRelation relation4 = new GridViewRelation(template3);
    relation4.ChildTemplate = template4;
    relation4.RelationName = "ParentChild";
    relation4.ParentColumnNames.Add("Id");
    relation4.ChildColumnNames.Add("ParentId");
    radGridView1.Relations.Add(relation4);
}

private object GetData(int from, int to, int parentFrom, int parentTo)
{
    DataTable dt = new DataTable();
    dt.Columns.Add("Id", typeof(int));
    dt.Columns.Add("Name", typeof(string));  
    dt.Columns.Add("ParentId", typeof(int));
    Random rand = new Random();
    for (int i = from; i < to; i++)
    {
        dt.Rows.Add(i, "Child" + i, rand.Next(parentFrom, parentTo));
    }
    return dt;
}

private void radButton1_Click(object sender, EventArgs e)
{
    string s = "default.xml";
    SaveFileDialog dialog = new SaveFileDialog();
    dialog.Filter = "xml files (*.xml)|*.xml|All files (*.*)|*.*";
    dialog.Title = "Select a xml file";
    if (dialog.ShowDialog() == DialogResult.OK)
    {
        s = dialog.FileName;
    }
    this.radGridView1.SaveLayout(s);
}

private void radButton2_Click(object sender, EventArgs e)
{
    string s = "default.xml";
    OpenFileDialog dialog = new OpenFileDialog();
    dialog.Filter = "xml files (*.xml)|*.xml|All files (*.*)|*.*";
    dialog.Title = "Select a xml file";
    if (dialog.ShowDialog() == DialogResult.OK)
    {
        s = dialog.FileName;
    }
    this.radGridView1.LoadLayout(s);
}


Workaround: grid templates for the inner levels are recreated after loading the layout. Their DataSource is null and the existing relations points to the old templates. Clear the relations and setup them again with the new  child template instances.
Approved
Last Updated: 19 Mar 2019 07:32 by ADMIN

To reproduce: 

- Add items with the same display member open the drop-down and select the second.

- Select another control on the form and then reopen the popup.

- The first item is selected.

Workaround: 

class MyMultiColumnComboBox : RadMultiColumnComboBox
{
    protected override void OnLostFocus(EventArgs e)
    {
        if (this.DropDownStyle == Telerik.WinControls.RadDropDownStyle.DropDownList)
        {
            return;
        }
        base.OnLostFocus(e);
    }
}

Completed
Scheduled for 2018.3.1016
Last Updated: 13 Mar 2019 16:21 by ADMIN
How to reproduce: 
public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();

        ThemeResolutionService.AllowAnimations = false;
        this.radGridView1.DataSource = this.GetData();
    }

    private DataTable GetData()
    {
        DataTable dt = new DataTable();
        dt.Columns.Add("Id", typeof(int));
        dt.Columns.Add("Name", typeof(string));
        dt.Rows.Add(1, "\u0002x09");
        for (int i = 1; i < 10; i++)
        {
            dt.Rows.Add(i, "name");
        }

        return dt;
    }

    private void radButton1_Click(object sender, EventArgs e)
    {
        GridViewSpreadExport spreadExporter = new GridViewSpreadExport(this.radGridView1);
        spreadExporter.FileExportMode = FileExportMode.CreateOrOverrideFile;
        SpreadExportRenderer exportRenderer = new SpreadExportRenderer();
        spreadExporter.RunExport(@"..\..\exported-file.xlsx", exportRenderer);
    }
}

ArgumentException with clarification similar to  "'\u001f', hexadecimal value 0x1F, is an invalid character." is thrown when trying to export document containing characters which are not supported in XML document - such as some control characters like 0x00, 0x1F, 0x1B, etc. Such characters are described in the XML specification here: https://www.w3.org/TR/xml/#charsets.

Although the escaped strings are not supported (see  https://feedback.telerik.com/Project/184/Feedback/Details/190228 ), the library could prevent the exception and export the document successfully by skipping such characters.

Workaround: remove such characters before the export. Check the following StackOverflow answer for some ideas on code for replacing the characters: http://stackoverflow.com/a/14323524/259206
Completed
Scheduled for 2019.1.117
Last Updated: 13 Mar 2019 13:38 by ADMIN
How to reproduce: bind the grid using the code snippet below and enter name in the SearchRow
public partial class RadForm1 : Telerik.WinControls.UI.RadForm
{
    public RadForm1()
    {
        InitializeComponent();

        this.radGridView1.DataSource = this.GetData();
        this.radGridView1.AutoSizeColumnsMode = Telerik.WinControls.UI.GridViewAutoSizeColumnsMode.Fill;
        this.radGridView1.AllowSearchRow = true;

        this.radGridView1.MasterView.TableSearchRow.InitialSearchResultsTreshold = 0;
        this.radGridView1.MasterView.TableSearchRow.SearchResultsGroupSize = int.MaxValue;;
    }

    private DataTable GetData()
    {
        DataTable dt = new DataTable();
        dt.Columns.Add("Id", typeof(int));
        dt.Columns.Add("Name", typeof(string));
        dt.Columns.Add("Date", typeof(DateTime));
        dt.Columns.Add("Bool", typeof(bool));
        dt.Columns.Add("Description", typeof(string));
        for (int i = 0; i < 2000; i++)
        {
            for (int j = 0; j < 5; j++)
            {
                dt.Rows.Add(i, "Name " + j, DateTime.Now.AddDays(i), i % 2 == 0 , "Description " + i);
            }
        }

        return dt;
    }
}

Workaround: in the search row, set the InitialSearchResultsTreshold property to 0 and the SearchResultsGroupSize property to int.MaxValue
public RadForm1()
{
    InitializeComponent();

    this.radGridView1.DataSource = this.GetData();
    this.radGridView1.AutoSizeColumnsMode = Telerik.WinControls.UI.GridViewAutoSizeColumnsMode.Fill;
    this.radGridView1.AllowSearchRow = true;

    this.radGridView1.MasterView.TableSearchRow.SearchProgressChanged += TableSearchRow_SearchProgressChanged;
    this.radGridView1.MasterView.TableSearchRow.InitialSearchResultsTreshold = 0;
    this.radGridView1.MasterView.TableSearchRow.SearchResultsGroupSize = int.MaxValue;
}
Approved
Last Updated: 11 Mar 2019 08:49 by ADMIN

When you start typing in the search text box some long text, not all key strokes will be handled. Please refer to the attached gifs file illustrating the behavior in the previous version and the latest release. 

Please refer to the attached sample project. Run the project and try typing "too long to type" in as your search.

Approved
Last Updated: 05 Mar 2019 07:00 by ADMIN
Use attached to reproduce.
Completed
Last Updated: 27 Feb 2019 08:40 by ADMIN
To reproduce: please refer to the attached sample project and follow the steps from the attached gif file.

1. Run the project and type "hana" in the second filter cell. You will notice that after a few seconds the input is handled and the grid is filtered.

Workaround: use RadVirtualGrid instead. 
https://docs.telerik.com/devtools/winforms/virtualgrid/overview
https://docs.telerik.com/devtools/winforms/virtualgrid/filtering/filtering

Second workaround: https://docs.telerik.com/devtools/winforms/gridview/filtering/how-to/filter-on-enter
Approved
Last Updated: 26 Feb 2019 21:09 by Bryan Cho
Changing the DataSource or scrolling are slow.

Create a grid with more than 20 columns and add 5K rows for example. Maximize the form and try to scroll with mouse wheel. You will notice that the scrolling performance is worse compared to the normal state of the form with less visible visual elements.

Workaround: this.radGridView1.EnableFastScrolling = true; and use the scrollbar's thumb

Second workaround: use paging:  https://docs.telerik.com/devtools/winforms/gridview/paging/overview Thus, you will display as many rows as possible to display on the screen per page. Instead of scrolling, you will navigate through pages.
Approved
Last Updated: 21 Feb 2019 08:27 by ADMIN
To reproduce:
- Filter a self-referencing grouped grid. 

Workaround:
private void _rgvFreeCodeValues_FilterChanged(object sender, GridViewCollectionChangedEventArgs e)
{
    foreach (var row in RgvFreeCodeValues.Rows)
        row.IsExpanded = false;
}

private void _rgvFreeCodeValues_FilterChanging(object sender, GridViewCollectionChangingEventArgs e)
{
    foreach (var row in RgvFreeCodeValues.Rows)
        row.IsExpanded = true;
}
Completed
Last Updated: 21 Feb 2019 05:42 by ADMIN
This was working this way in 2017 then we changer it so all rows are affected. 

Bot modes should be supported. 

Completed
Last Updated: 13 Feb 2019 15:39 by ADMIN

Dears

Looks like after last Telerik update to 2019.1.117.40 lilter do digits/numbers is not working any more. When I'd like filter out on decimal columns (or even text column but with linked decimal/int values) I get no results, no rows.

With text columns all is ok.

 

BR

Approved
Last Updated: 13 Feb 2019 11:18 by ADMIN

To reproduce:

Update the data source directly and check the OldItems array.

Completed
Last Updated: 05 Feb 2019 14:59 by ADMIN
Completed
Last Updated: 05 Feb 2019 14:29 by ADMIN
To reproduce: Initially, the row at index 0 is white, when you move it to index 5 it is still white until you hover it:

        public RadForm1()
        {
            InitializeComponent();

            this.radGridView1.Columns.Add("Data");
            for (int i = 0; i < 100; i++)
            {
                this.radGridView1.Rows.Add(i);
            }
            this.radGridView1.EnableAlternatingRowColor = true;
            this.radGridView1.TableElement.AlternatingRowColor = Color.Aqua;
        }
        
        private void radButton1_Click(object sender, EventArgs e)
        {
            this.radGridView1.Rows.Move(0, 5);
        }

Workaround:

        private void radButton1_Click(object sender, EventArgs e)
        {
            this.radGridView1.Rows.Move(0, 5);
            this.radGridView1.Rows[5].InvalidateRow();
        }
New
Last Updated: 29 Jan 2019 10:29 by ADMIN
Created by: Pieter
Comments: 1
Category: GridView
Type: Bug Report
0

Steps to reproduce:

  • Create a RadGridView
  • DataBind the grid to a DataView (it might also fail for other kinds of databinding or content)
  • For a column, call BestFit().
  • Remove that column from the grid.
  • Add the Grid to a parent form or control 
  • Make the form/control visible.

When the grid is loaded and displayed, a NullReferenceException will be thrown:


Message             : Object reference not set to an instance of an object.
Type                : System.NullReferenceException
Source              : Telerik.WinControls.GridView
Stack trace         : Telerik.WinControls.UI.BestFitHelper.SetColumnWidth(GridViewColumn column, Single desiredWidth)
                      Telerik.WinControls.UI.BestFitHelper.BestFitColumnCore(GridViewColumn column, BestFitColumnMode mode)
                      Telerik.WinControls.UI.BestFitHelper.ProcessRequests()
                      Telerik.WinControls.UI.RowsContainerElement.MeasureOverride(SizeF availableSize)
                      Telerik.WinControls.RadElement.MeasureCore(SizeF availableSize)
                      Telerik.WinControls.RadElement.Measure(SizeF availableSize)
                      Telerik.WinControls.UI.ScrollViewElement`1.MeasureViewElement(SizeF availableSize)
                      Telerik.WinControls.UI.ScrollViewElement`1.MeasureView(SizeF availableSize)
                      Telerik.WinControls.UI.ScrollViewElement`1.MeasureOverride(SizeF availableSize)
                      Telerik.WinControls.UI.GridTableElement.MeasureOverride(SizeF availableSize)
                      Telerik.WinControls.RadElement.MeasureCore(SizeF availableSize)
                      Telerik.WinControls.RadElement.Measure(SizeF availableSize)
                      Telerik.WinControls.Layouts.DockLayoutPanel.MeasureOverride(SizeF constraint)
                      Telerik.WinControls.RadElement.MeasureCore(SizeF availableSize)
                      Telerik.WinControls.RadElement.Measure(SizeF availableSize)
                      Telerik.WinControls.UI.LightVisualElement.MeasureElements(SizeF availableSize, SizeF clientSize, Padding borderThickness)
                      Telerik.WinControls.UI.LightVisualElement.MeasureOverride(SizeF availableSize)
                      Telerik.WinControls.RadElement.MeasureCore(SizeF availableSize)
                      Telerik.WinControls.RadElement.Measure(SizeF availableSize)
                      Telerik.WinControls.RootRadElement.MeasureOverride(SizeF availableSize)
                      Telerik.WinControls.RootRadElement.MeasureCore(SizeF availableSize)
                      Telerik.WinControls.RadElement.Measure(SizeF availableSize)
                      Telerik.WinControls.RadElementTree.PerformInnerLayout(Boolean performMeasure, Int32 x, Int32 y, Int32 width, Int32 height)
                      Telerik.WinControls.RadControl.OnLoad(Size desiredSize)
                      Telerik.WinControls.UI.RadGridView.OnLoad(Size desiredSize)
                      Telerik.WinControls.RadControl.LoadElementTree(Size desiredSize)
                      Telerik.WinControls.RadControl.OnCreateControl()
                      System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible)
                      System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible)
                      System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible)
                      System.Windows.Forms.Control.CreateControl()
                      System.Windows.Forms.Control.SetVisibleCore(Boolean value)
                      Telerik.WinControls.UI.TabPanel.set_Visible(Boolean value)
                      Telerik.WinControls.UI.TabStripPanel.SetSelected(TabPanel tabPanel)
                      Telerik.WinControls.UI.TabStripPanel.UpdateTabSelection(Boolean updateFocus)
                      Telerik.WinControls.UI.Docking.DockTabStrip.UpdateTabSelection(Boolean updateFocus)
                      Telerik.WinControls.UI.Docking.ToolTabStrip.UpdateTabSelection(Boolean updateFocus)
                      Telerik.WinControls.UI.TabStripPanel.OnHandleCreated(EventArgs e)
                      System.Windows.Forms.Control.WmCreate(Message& m)
                      System.Windows.Forms.Control.WndProc(Message& m)
                      System.Windows.Forms.ScrollableControl.WndProc(Message& m)
                      Telerik.WinControls.RadControl.WndProc(Message& m)
                      Telerik.WinControls.UI.SplitPanel.WndProc(Message& m)
                      System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
                      System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
                      System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)


Approved
Last Updated: 24 Jan 2019 14:58 by Eric Moreau

Hi

I just found a strange issue using the latest bits of the Telerik RadGridView. 

I have a grid that contains ColumnGroupsViewDefinition. Inside one of the group, one of the column is a GridViewComboBoxColumn.

The grid shows correctly on the screen.

If I try to export it using GridViewSpreadExport, I get an exception saying "input string was not in a correct format".

The export works fine if:

-I don't have groups

-I export to HTML using ExportToHTML

-I export to HTML using ExportToCSV

 

Any help please?

New
Last Updated: 22 Jan 2019 12:15 by ADMIN
Created by: Shawn
Comments: 2
Category: GridView
Type: Feature Request
0

I have the following logic for my View, which has a RadGridView control (add to form at design-time).

GUI is a lightweight view, Controller does the heavy lifting. That part is all good.

 

However setting the column name and column autosize stuff is a little more "over-complicated" than I'd wish to see. It all works though.

Would be nice to have a "GridViewTextBoxColumnAttribute" as per below, for properties on Custom datasource objects to achieve the same thing in a more concise way.

Or am I missing something and there is a much easier way to do what I want?

 

I have a number of datasource classes: MyObject, MyCar, MyDog, MyWhatever... that ALL have different property names and datatypes, but may or may-not have the same column name or MasterTemplate style.

 

Also BestFitColumns is a function of the MasterTemplate, would be nice if it were a property for consistency sake (call to internal function encapsulated in the Set etc), as from a Telerik user's perspective it's just an enum. Then it would be setable in the SmartTag window as well, as functions can't be assigned to.

 

  public partial class RadForm1 : Telerik.WinControls.UI.RadForm, IView
    {
        public RadForm1)
        {
            InitializeComponent();
        }

        private void RadForm1_Load(object sender, EventArgs e)
        {
            var x = new Controller();
            x.SetTemplate(this);           
        }

        public Telerik.WinControls.UI.RadGridView RadGridView()
        {
            return this.radGridView1;
        }
    }

    public class Controller
    {
        public void SetTemplate(IView view)
        {
            var View_RadGrid = view.RadGridView();
            View_RadGrid.MasterTemplate.AutoGenerateColumns = false;
            View_RadGrid.MasterTemplate.AutoGenerateHierarchy = false;
            View_RadGrid.MasterTemplate.AllowColumnResize = false;
            View_RadGrid.MasterTemplate.BestFitColumns(Telerik.WinControls.UI.BestFitColumnMode.AllCells);

            var cols = new List<Telerik.WinControls.UI.GridViewDataColumn>()
            {
                new Telerik.WinControls.UI.GridViewTextBoxColumn("DisplayName1"),
                new Telerik.WinControls.UI.GridViewTextBoxColumn("DisplayName2")
            };
            View_RadGrid.MasterTemplate.Columns.AddRange(cols.ToArray());

            View_RadGrid.DataSource = new List<MyObject>() 
            { 
                new MyObject() { DisplayName1 = "1", DisplayName2 = "2" }, 
                new MyObject() { DisplayName1 = "3", DisplayName2 = "4" } 
            };
        }

        private class MyObject
        {
            [GridViewTextBoxColumnAttribute("DisplayName1", BestFitColumn = Telerik.WinControls.UI.BestFitColumnMode.AllCells, AllowColumnResize = false)]
            public string DisplayName1 { get; set; }

            [GridViewTextBoxColumnAttribute("DisplayName2", BestFitColumn = Telerik.WinControls.UI.BestFitColumnMode.AllCells, AllowColumnResize = false)]
            public string DisplayName2 { get; set; }
        }
    }

    public interface IView
    {
        Telerik.WinControls.UI.RadGridView RadGridView();
    }

    [System.AttributeUsage(System.AttributeTargets.Property)]
    public class GridViewTextBoxColumnAttribute : System.Attribute
    {
        private string FieldName;
        public Telerik.WinControls.UI.BestFitColumnMode BestFitColumn;
        public bool AllowColumnResize;

        public GridViewTextBoxColumnAttribute(string fieldName)
        {
            this.FieldName = fieldName;
        }
    }

Completed
Last Updated: 11 Jan 2019 10:58 by ADMIN
ADMIN
Created by: Hristo
Comments: 0
Category: GridView
Type: Feature Request
2

			
Completed
Last Updated: 11 Jan 2019 10:51 by ADMIN
ADMIN
Created by: Peter
Comments: 2
Category: GridView
Type: Feature Request
6
GridTimeColumn will display and allow user to edit with TimeEditor Time and Time-Span column types from the Database.
1 2 3 4 5 6