Declined
Last Updated: 23 Jul 2015 13:47 by ADMIN
Steps to reproduce:

1. Add a GridViewDateTimeColumn to a grid.

2. Add rows where one or more rows should contain null as the columns value.

3. Sort the grid by the date time column. 



WORKAROUND:

Create a custom RadGridDateTimeConverter and assign it as the column's date type converter:

public class CustomRadGridDateTimeConverter : RadGridDateTimeConverter
{
    public CustomRadGridDateTimeConverter(GridViewDateTimeColumn column)
        : base(column)
    { }

    public override object ConvertTo(ITypeDescriptorContext context, System.Globalization.CultureInfo culture, object value, Type destinationType)
    {
        if (destinationType == typeof(DateTime) && value == null)
        {
            return DateTime.MinValue;
        }

        return base.ConvertTo(context, culture, value, destinationType);
    }
}



this.radGridView1.Columns["DateTime"].DataTypeConverter = new CustomRadGridDateTimeConverter(this.radGridView1.Columns["DateTime"] as GridViewDateTimeColumn);
Declined
Last Updated: 22 Jul 2015 14:46 by ADMIN
There should be a Enum (Left, Right, None) property of the Expander Column indicating whether the position of the expander column should be left right or none.  This would be especially important during pinning activities meaning no matter how many columns are being pinned and repositioned in the pinned area of the grid, it would always remain on the left, right or none.
Declined
Last Updated: 22 Jul 2015 11:06 by ADMIN
The horizontal scrollbar of the control does not behave correctly when there are several pinned columns and their width is larger than the visible area of RadGridView.
Declined
Last Updated: 22 Jul 2015 11:04 by ADMIN
The RadGridView should not leave its edit mode state, when scrolling is performed.
Declined
Last Updated: 26 Jun 2015 10:57 by ADMIN
To reproduce:
- Add two  GridViewMultiComboBoxColumns with different number of columns to a grid.
- set AutoSizeDropDownToBestFit to true in the CellEditorInitialized event.
- Start the project and open the drop down for the first column and then for the second.
- You will notice that the second time the drop down size is not calculated properly.

Workaround:
void radGridView1_CellEditorInitialized(object sender, GridViewCellEventArgs e)
{
    RadMultiColumnComboBoxElement el = e.ActiveEditor as RadMultiColumnComboBoxElement;
    
    if (el != null)
    {
        FieldInfo propertyInfo = el.GetType().GetField("savedColumnsWidth", BindingFlags.NonPublic | BindingFlags.Instance);
        propertyInfo.SetValue(el, -1);
             
        el.AutoSizeDropDownToBestFit = true;
    }
}
Declined
Last Updated: 17 Jun 2015 10:34 by ADMIN
ADMIN
Created by: Alexander
Comments: 1
Category: GridView
Type: Feature Request
1
RadGridView should be able to create new rows using objects with properties matching the FieldNames of the control's columns.
Declined
Last Updated: 05 Jun 2015 10:25 by ADMIN
1. Create a new project with RadGridView.
2. Bind it.
3. Add some filter descriptors.
4. Handle the CustomFiltering event and add custom filter for some column.
5. Run the project and you will see that all other filters are not applied.
Declined
Last Updated: 05 Jun 2015 09:18 by ADMIN
When you use a custom GroupComparer for the MasterTemplate, grouping is performed successfully for the first time. However, if you remove all groups and perform grouping again for the same columns, the grid behavior is not as expected: you will notice groups mismatching or duplication. Here is a sample code snippet which incorrect behavior is illustrated on the attached gif file:

public Form1()
{
    InitializeComponent();

    DataTable dt = new DataTable();
    dt.Columns.Add("Reference");
    dt.Columns.Add("Test Case");
    dt.Columns.Add("ChBW");
    dt.Columns.Add("Voltage");
    dt.Columns.Add("Environmental Conditions");
    dt.Columns.Add("RadioAccessTechnology");

    dt.Rows.Add("4.2.1", "E-Utran FDD...", "10", "C Nominal-2", "T Nominal - V Nominal", "E-UTRAN Only");
    dt.Rows.Add("5.2.1", "E-Utran FDD...", "3", "C Nominal-1", "T Nominal - V Nominal", "E-UTRAN Only");
    dt.Rows.Add("14.2.1", "E-Utran FDD...", "1", "C Nominal-3", "T Nominal - V Nominal", "E-UTRAN Only");
    dt.Rows.Add("2.2.1", "E-Utran FDD...", "4", "C Nominal-2", "T Nominal - V Nominal", "E-UTRAN Only");
    dt.Rows.Add("7.2.1", "E-Utran FDD...", "12", "C Nominal-1", "T Nominal - V Nominal", "E-UTRAN Only");
    dt.Rows.Add("2.2.1", "E-Utran FDD...", "2", "C Nominal-3", "T Nominal - V Nominal", "E-UTRAN Only");

    this.radGridControlSelection.DataSource = dt;
    this.radGridControlSelection.AutoSizeColumnsMode = GridViewAutoSizeColumnsMode.Fill;

    this.radGridControlSelection.MasterTemplate.GroupComparer = new GroupComparer();
}

public class GroupComparer : IComparer<Group<GridViewRowInfo>>
{
    public int Compare(Group<GridViewRowInfo> x, Group<GridViewRowInfo> y)
    {
        if (x.Level != y.Level)
        {
        }
        DataGroup group = x as DataGroup;

        var a = x.Header;
        var b = y.Header;

        int valueA;
        int valueB;

        if (group == null)
        {
            group = y as DataGroup;
        }
        if (group != null && group.GroupDescriptor != null && group.GroupDescriptor.GroupNames.Count > 0)
        {
            string propertyName = group.GroupDescriptor.GroupNames.First().PropertyName;
            if ((propertyName.ToUpper() == "VOLTAGE"))
            {
                int indexA = GetIndexContain(a.ToString().Split(new char[] { '-' })[1]);
                int indexB = GetIndexContain(b.ToString().Split(new char[] { '-' })[1]);

                if (indexA == indexB)
                {
                    return 0;
                }
                else if (indexA < indexB)
                {
                    return -1;
                }
                else
                {
                    return 1;
                }
            }
            else if (propertyName.ToUpper() == "RADIOACCESSTECHNOLOGY")
            {
                return x.Key.ToString().CompareTo(y.Key.ToString());
            }
            // BAND
            else if (propertyName.ToUpper() == "CHBW")
            {
                Int32.TryParse(a, out valueA);
                Int32.TryParse(b, out valueB);

                //ASCENDING SELECTED
                if (group.GroupDescriptor.GroupNames.First().Direction == ListSortDirection.Ascending)
                {
                    if (valueA > valueB)
                    {
                        return 1;
                    }
                    else if (valueA < valueB)
                    {
                        return -1;
                    }
                    else
                    {
                        return 0;
                    }
                }
                //DESCENDING
                else
                {
                    if (valueA > valueB)
                    {
                        return -1;
                    }
                    else if (valueA < valueB)
                    {
                        return 1;
                    }
                    else
                    {
                        return 0;
                    }
                }
            }
        }
        return x.Key.ToString().CompareTo(y.Key.ToString());
    }

    private int GetIndexContain(string a)
    {
        int parsedValue;
        if (int.TryParse(a, out parsedValue))
        {
            return 10 - parsedValue;
        }
        return -1;
    }
}


Workaround:

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

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

public class CustomGridViewElement : RadGridViewElement
{
    protected override Type ThemeEffectiveType     
    { 
        get    
        { 
            return typeof(RadGridViewElement);     
        }
    }

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

public class CustomMasterGridViewTemplate : MasterGridViewTemplate
{
    protected override GridViewListSource CreateListSource()
    {
        return new CustomGridViewListSource(this);
    }
}

public class CustomGridViewListSource : GridViewListSource
{
    public CustomGridViewListSource(GridViewTemplate template) : base(template)
    {
    }

    protected override RadCollectionView<GridViewRowInfo> CreateDefaultCollectionView()
    {
        return new CustomGridDataView(this);
    }
}

public class CustomGridDataView : GridDataView
{
    public CustomGridDataView(GridViewListSource listSource) : base(listSource)
    {
    }

    protected override GroupBuilder<GridViewRowInfo> CreateGroupBuilder()
    {
        return new CustomGroupBuilder(this.Indexer);
    }
}

public class CustomGroupBuilder : GridGroupBuilder
{
    public CustomGroupBuilder(Index<GridViewRowInfo> index) : base(index)
    {
    }

    protected override Group<GridViewRowInfo> GetGroup(GroupCollection<GridViewRowInfo> cache,
        Group<GridViewRowInfo> newGroup, Group<GridViewRowInfo> parent, object key, int level)
    {
        GroupDescriptor currentDescriptor = this.CollectionView.GroupDescriptors[level];
        DataGroup group = (DataGroup)base.GetGroup(null, newGroup, parent, key, level);
        if (group.GroupDescriptor != null && group.GroupDescriptor != currentDescriptor)
        {
            SetGroupDescriptor(group, null);
            IGroupFactory<GridViewRowInfo> groupFactory = this.CollectionView.GroupFactory;
            group = (DataGroup)groupFactory.CreateGroup(key, parent);
            group.GroupBuilder = this;
        }
        SetGroupDescriptor(group, currentDescriptor);
        return group;
    }

    private void SetGroupDescriptor(DataGroup dataGroup, GroupDescriptor currentDescriptor)
    {
        FieldInfo fi = typeof(DataGroup).GetField("groupDescriptor", BindingFlags.NonPublic | BindingFlags.Instance);
        fi.SetValue(dataGroup, currentDescriptor);
    }
}
Declined
Last Updated: 05 Jun 2015 08:32 by ADMIN
To reproduce:
void radGridView1_CurrentRowChanged(object sender, Telerik.WinControls.UI.CurrentRowChangedEventArgs e)
        {
            e.CurrentRow.Cells[2].ColumnInfo.IsCurrent = true;
        }
Declined
Last Updated: 20 Apr 2015 11:49 by ADMIN
To reproduce:

public Form1() 

{ 

InitializeComponent(); 

InitializeRadGridView(); 

this.Size = new System.Drawing.Size(782, 647);

radGridView1.DataSource = GetDataSource(); 

radGridView1.MasterTemplate.ExpandAll(); 

} 



private void InitializeRadGridView()

{ 

radGridView1.EnableGrouping = false;

radGridView1.AllowAddNewRow = false; 

radGridView1.MasterTemplate.AutoSizeColumnsMode = Telerik.WinControls.UI.GridViewAutoSizeColumnsMode.Fill;

GridViewDataColumn column = new GridViewTextBoxColumn(); 

column.FieldName = "Name";

radGridView1.MasterTemplate.Columns.Add(column); 

GridViewTemplate template = new GridViewTemplate(); 

template.AllowCellContextMenu = false; 

template.AllowColumnHeaderContextMenu = false; 

template.AutoGenerateColumns = false;

template.ShowRowHeaderColumn = false; 

template.ShowColumnHeaders = false; 

template.AllowAddNewRow = false; 

template.AutoSizeColumnsMode = GridViewAutoSizeColumnsMode.Fill; 

radGridView1.Templates.Add(template); 

GridViewRelation relation = new GridViewRelation(radGridView1.MasterTemplate, template);

relation.ChildColumnNames.Add("Bs"); 

radGridView1.Relations.Add(relation); 

column = new GridViewTextBoxColumn(); 

column.FieldName = "Name";

radGridView1.Templates[0].Columns.Add(column); 

column = new GridViewImageColumn(); 

column.MinWidth = column.MaxWidth = 30;

radGridView1.Templates[0].Columns.Add(column);

radGridView1.Templates[0].AllowRowReorder = true; 

template = new GridViewTemplate(); 

template.AllowCellContextMenu = false;

template.AllowColumnHeaderContextMenu = false; 

template.AutoGenerateColumns = false; 

template.ShowRowHeaderColumn = false; 

template.ShowColumnHeaders = false;

template.AllowAddNewRow = false;

template.AutoSizeColumnsMode = GridViewAutoSizeColumnsMode.Fill; 

radGridView1.Templates[0].Templates.Add(template);

relation = new GridViewRelation(radGridView1.Templates[0], template); 

relation.ChildColumnNames.Add("Cs"); 

radGridView1.Relations.Add(relation); 

column = new GridViewTextBoxColumn(); 

column.FieldName = "Name"; 

radGridView1.Templates[0].Templates[0].Columns.Add(column); 

radGridView1.Templates[0].Templates[0].AllowRowReorder = true; 

}



private List<A> GetDataSource() 

{ 

List<A> list = new List<A>(); 

A a1 = new A(); 

a1.Id = 1;

a1.Name = "A1"; 

list.Add(a1);

A a2 = new A();

a2.Id = 2; 

a2.Name = "A2"; 

list.Add(a2); 

A a3 = new A(); 

a3.Id = 3; 

a3.Name = "A3"; 

list.Add(a3); 

B b1 = new B(); 

b1.Id = 10; 

b1.Name = "B1";

a1.Bs.Add(b1);

B b2 = new B(); 

b2.Id = 20; 

b2.Name = "B2"; 

a1.Bs.Add(b2); 

B b3 = new B(); 

b3.Id = 30; 

b3.Name = "B3"; 

a1.Bs.Add(b3); 

B b4 = new B(); 

b4.Id = 40; b4.Name = "B4"; 

a2.Bs.Add(b4); 

B b5 = new B(); 

b5.Id = 50; b5.Name = "B5"; 

a3.Bs.Add(b5); 

C c1 = new C(); 

c1.Id = 100; 

c1.Name = "C1"; 

b1.Cs.Add(c1); 

b3.Cs.Add(c1); 

C c2 = new C(); 

c2.Id = 200; 

c2.Name = "C2"; 

b1.Cs.Add(c2); 

b2.Cs.Add(c2); 

b2.Cs.Add(c1); 

C c3 = new C(); 

c3.Id = 300; 

c3.Name = "C3"; 

b1.Cs.Add(c3); 

b2.Cs.Add(c3); 

b3.Cs.Add(c3); 

C c4 = new C(); 

c4.Id = 400;

c4.Name = "C4"; 

b4.Cs.Add(c4); 

C c5 = new C(); 

c5.Id = 500; 

c5.Name = "C5"; 

b5.Cs.Add(c5); 

return list; 

} 

} 



public class A 

{ 

public int Id { get; set; } 

public string Name { get; set; }

public List<B> Bs { get; set; }

public A() { Bs = new List<B>();

}

} 



public class B

{ 

public int Id { get; set; } 

public string Name { get; set; } 

public List<C> Cs { get; set; } 

public B() { Cs = new List<C>(); 

} 

} 



public class C 

{ 

public int Id { get; set; } 

public string Name { get; set; 

}

} 



The last row is not fully visible, hence a scroll bar should be shown 

Workaround: collapse and expand the last row in the grid: 

radGridView1.MasterTemplate.ExpandAll(); 

radGridView1.ChildRows[radGridView1.ChildRows.Count - 1].IsExpanded = false; 

radGridView1.ChildRows[radGridView1.ChildRows.Count - 1].IsExpanded = true; 
Declined
Last Updated: 20 Apr 2015 10:55 by ADMIN
StackOverFlow exception when the user sorts a GridView control.  The exception occurs in the CellValueNeeded method when accessing e.RowIndex.  The GridView is in VirtualMode.  The error doesn't occur during the initial load of the data.
Declined
Last Updated: 20 Apr 2015 10:52 by ADMIN
When RadGridView is in virtual mode, a StackOverflowException occurs if sorting or filtering is performed.
Declined
Last Updated: 10 Apr 2015 07:46 by ADMIN
Steps to reproduce:
1) Add RadGridView control
2) Add GridViewTextBoxColumn
2) Enable filtering: 

            this.radGridView1.EnableFiltering = true;

3) Programmatically set filter descriptor:

            FilterDescriptor filter = new FilterDescriptor();
            filter.PropertyName = "TextBoxColumn";
            filter.Operator = FilterOperator.IsEqualTo;
            filter.IsFilterEditor = true;
            
            this.radGridView1.FilterDescriptors.Add(filter);

Expected result: the default FilterDescriptor is changed from Contains to IsEqual
Actual result: can not set the default FilterDescriptor from Contains to IsEqual operator to a TextBoxColumn

Workaround:

        private void OnFilterExpressionChanged(object sender, FilterExpressionChangedEventArgs e)
        {
            GridViewTemplate owner = sender as GridViewTemplate;
            List<string> filterExpressions = new List<string>();

            for (int i = 0; i < owner.FilterDescriptors.Count; i++)
            {
                FilterDescriptor descriptor = owner.FilterDescriptors[i];
                string expression = null;

                CompositeFilterDescriptor compositeFilterDescriptor = descriptor as CompositeFilterDescriptor;

                if (compositeFilterDescriptor != null)
                {
                    foreach (FilterDescriptor filterDescriptor in compositeFilterDescriptor.FilterDescriptors)
                    {
                        if (string.IsNullOrEmpty(filterDescriptor.PropertyName) ||
                            owner.Columns[filterDescriptor.PropertyName] == null)
                        {
                            continue;
                        }
                    }

                    expression = CompositeFilterDescriptor.GetCompositeExpression(compositeFilterDescriptor);
                }
                else
                {
                    if (string.IsNullOrEmpty(descriptor.PropertyName) ||
                        owner.Columns[descriptor.PropertyName] == null)
                    {
                        continue;
                    }

                    if (descriptor.Value == null && (descriptor.Operator == FilterOperator.IsNotEqualTo || descriptor.Operator == FilterOperator.IsEqualTo))
                    {
                        expression = string.Empty;
                    }
                    else
                    {
                        expression = descriptor.Expression;
                    }
                }

                if (!string.IsNullOrEmpty(expression))
                {
                    filterExpressions.Add(expression);
                }
            }

            string logicalOperator = (owner.FilterDescriptors.LogicalOperator == FilterLogicalOperator.And) ? " AND " : " OR ";
            string resultExpression = String.Join(logicalOperator, filterExpressions.ToArray());
            e.FilterExpression = resultExpression;
        }
Declined
Last Updated: 13 Mar 2015 16:03 by Vincent
The conditional formatting collection get deleted after closing the property builder.

To reproduce :

Add a gridview with a datasource.
Open property builder
Select a column
Advance -> ConditionalFormattingObjectList
Add a expression, set a name
Press Ok

If you click the ConditionalFormattingObjectList, you can see the expression

If you click close the Property Builder, the list is not saved when you open it again.
Declined
Last Updated: 26 Dec 2014 15:08 by ADMIN
Currently when RadGridView contains multiple header rows and its layout is being saved, after loading it the grid shows "No data to display" although it is binded to a data source. 

Add a functionality to support saving the layout when RadGridView contains multiple header rows
Declined
Last Updated: 26 Dec 2014 15:06 by ADMIN
Save\Load functionality of the control should work with ColumnGroupsViewDefinition.
Declined
Last Updated: 26 Dec 2014 12:47 by ADMIN
Currently it is not possible to change the table header row height when using column groups view definition.
Declined
Last Updated: 25 Dec 2014 11:15 by ADMIN
Created by: Mani
Comments: 1
Category: GridView
Type: Feature Request
0
i would like to customize the grid like below attached screen shot,is it possible using telerik win forms (rad grid view), if possible can you please send me sample code for that, if not possible can you suggest me alternate solution  for this requirement.
Declined
Last Updated: 03 Nov 2014 16:14 by ADMIN
This is not considered an issue, it is how RadGridView works. Here are more details:

In order for a GridDetailViewCellElement  to display a pageview instead of a single table element, either the template of the row holding it has to have more than one child template, or its ShowChildViewCaptions should be true.
Once there is a page view, the tabs in it will be visible at all times, except when some of the templates has no rows and AllowAddNewRow for it is false – if it does not have any rows and the user cannot add row, it is considered that there is no need from it.
If one needs to change the visibility of the tabs, this can be done in the ViewCellFormatting event:
private void RadGridView1_ViewCellFormatting(object sender, CellFormattingEventArgs e)
{
	GridDetailViewCellElement detailCell = e.CellElement as GridDetailViewCellElement;

	if (detailCell != null) {
		foreach (RadPageViewItem item in detailCell.PageViewElement.Items) {
			item.Visibility = Telerik.WinControls.ElementVisibility.Visible;
		}
	}
}
Declined
Last Updated: 10 Oct 2014 09:00 by Svetlin
The alternating row color in RadGridView does not work when the control is in unbound mode and LoadFrom method is used.

Resolution: 
The issue is duplicated with feedback item FIX. RadGridView - AlternatingRowColor does not work when data is loaded in the RadGridView from a IDataReader
Here is the link to item:  http://feedback.telerik.com/Project/154/Feedback/Details/112656-fix-radgridview-alternatingrowcolor-does-not-work-when-data-is-loaded-in-the-r