Declined
Last Updated: 08 Sep 2015 11:31 by ADMIN
Synchronization between the filter descriptors collection and the excel like filtering.
Declined
Last Updated: 24 Aug 2015 13:05 by ADMIN
DECLINED: This happens because you are setting a non-image value to a GridViewImageColumn. The GridViewImageColumn is designed to work with image data directly and if any non-image data is used with this column, this will result in a large number of internal exceptions which are thrown while the column tries to read the image. The throw operation is an expensive one and this causes the slowdown. Also, note that the slowdown is much heavier when running the application with the debugger attached, because when this is the case, each internally thrown exception is written to the console, and writing to the console is an even more expensive operation. 

If the image is to be applied on the CellFormatting event and the value of the cells in a column are not going to be images, then GridViewTextBoxColumn should be used instead.

To reproduce: add a RadGridView and an  ImageList with two images. Use the following code snippet:

public Form1()
{
    InitializeComponent();

    DataTable dt = new DataTable();
    for (int i = 0; i < 10; i++)
    {
        dt.Columns.Add("Pic" + i);
    }
    
    for (int i = 0; i < 100; i++)
    {
        DataRow newRow = dt.NewRow();
        foreach (DataColumn col in dt.Columns)
        {
            newRow[col.ColumnName] = i;
        }
        dt.Rows.Add(newRow);
    }
    radGridView1.AutoGenerateColumns = false;
    
    for (int i = 0; i < 10; i++)
    {
        GridViewImageColumn imgCol = new GridViewImageColumn("col" + i);
        imgCol.Width = 100;
        imgCol.FieldName = "Pic" + i;
        this.radGridView1.Columns.Add(imgCol);
    }

    this.radGridView1.DataSource = dt;

    this.radGridView1.CellFormatting += radGridView1_CellFormatting;
}

private void radGridView1_CellFormatting(object sender, CellFormattingEventArgs e)
{
    if (e.Row is GridViewDataRowInfo)
    {
        e.CellElement.Image = this.imageList1.Images[e.RowIndex % 2];
    }
}
Declined
Last Updated: 15 Oct 2015 11:04 by ADMIN
To reproduce: 
1. Add GridView which inherits the RadGridView
2. Populate the grid with some data
3. Add conditional formatting and set RowBackColor and CellBackColor 
4. Subscribe to RowFormatting event and change the font of selected row: 
void radGridView2_RowFormatting(object sender, RowFormattingEventArgs e)
{
    if (e.RowElement.IsSelected)
    {
        e.RowElement.Font = new Font(this.Font.FontFamily, this.Font.Size + 2, FontStyle.Bold);
    }
    else
    {
        e.RowElement.ResetValue(LightVisualElement.FontProperty, ValueResetFlags.Local);
        //e.RowElement.Font = this.Font;
    }
}

5. Select row with conditional formatting. The font of selected row is bold which is correct. Select another row and you will see that the previous row is still bold.

Workaround: 
Subscribe to CellFormatting event instead RowFormatting
void radGridView2_CellFormatting(object sender, CellFormattingEventArgs e)
{
    if (e.Row.IsSelected)
    {
        e.CellElement.Font = new Font(this.Font.FontFamily, this.Font.Size + 2, FontStyle.Bold);
    }
    else
    {
        e.CellElement.ResetValue(LightVisualElement.FontProperty, ValueResetFlags.Local);
    }
}
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: 21 Oct 2015 08:38 by ADMIN
To reproduce:
- Add grid with a DateTime column with default value "5/1/2014";
- Start the app and press the following keys one after another: 5/1/
- You will notice that the "1" is not replaced.

Please note that the similar behavior occur when the year is entered (it does not match the default one). 

Workaround handle the key press for such cases manually:

void radGridView1_CellEditorInitialized(object sender, GridViewCellEventArgs e)
{
    RadDateTimeEditor ed = e.ActiveEditor as RadDateTimeEditor;
    
    RadDateTimeEditorElement el = ed.EditorElement as RadDateTimeEditorElement;
    el.KeyPress += el_KeyPress;
}

private void el_KeyPress(object sender, KeyPressEventArgs e)
{
	RadDateTimeEditorElement el = (RadDateTimeEditorElement)sender;
	int day = el.Value.Value.Day;
	int key = -1;
	int.TryParse(e.KeyChar.ToString(), key);

	RadMaskedEditBoxElement element = el.TextBoxElement.TextBoxItem.Parent as RadMaskedEditBoxElement;
	MaskDateTimeProvider provider = element.Provider as MaskDateTimeProvider;

	if (provider.SelectedItemIndex == 2) {
		if (key > 0 & key <= 9) {
			if (el.TextBoxElement.TextBoxItem.SelectionLength != 0) {
				if (!booKeying) {
					dynamic NewValue = new DateTime(el.Value.Value.Year, el.Value.Value.Month, key);
					el.Value = NewValue;
					e.Handled = true;
					booKeying = true;
				}
			}
		}
	}
}
Declined
Last Updated: 06 Feb 2018 06:40 by ADMIN
To reproduce:
- Add a RadGridView and a button to a blank form.
- Subscribe to CellValidating event from the grid and set the cancel property of the CellValidatingEventArgs to true upon some condition.
- Add click event handler for the button and print a message in it.
- Start the application and enter some invalid data in the grid cell, then click the button.
- The code from the button's event handler is executed.

Workaround use a flag to determine when to execute the corresponding button code:
bool validating = false;

void radGridView1_CellValidating(object sender, Telerik.WinControls.UI.CellValidatingEventArgs e)
{
    if (e.Value.ToString().Length < 5)
    {
        e.Cancel = true;
        validating = true;
        e.Row.ErrorText = "Validation error!";
    }
    else
    {
        validating = false;
    }
}

private void radButton1_Click(object sender, EventArgs e)
{
    if (!validating)
    {
        Debug.WriteLine("Executed");
    }
}


Declined
Last Updated: 01 Oct 2014 11:53 by ADMIN
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: 01 Oct 2014 12:58 by ADMIN
Setting the DataSource is slower (about 1/3 times more)  when ShowColumnHeaders is set to true. Workaround: 

Set the ShowColumnHeaders to false, then set the DataSource and restore the ShowColumnHeaders state:

radGridView1.ShowColumnHeaders = false;
radGridView1.DataSource =  mySource;
radGridView1.ShowColumnHeaders = true;
Declined
Last Updated: 01 Oct 2014 12:58 by ADMIN
DECLINED: this happens only when the double click is outside the bounds of the scroll button which is the expected behavior.

To reproduce: When the user clicks too fast on the quite thin area between the grid's scroll-bar arrow button and the row, it fires the CurrentRowChanging event.

Workaround:
private bool cancelChanging = false;

private void radGridView1_CurrentRowChanging(object sender, CurrentRowChangingEventArgs e)
{
if (cancelChanging)
{
e.Cancel = true;
cancelChanging = false;
}
}

private void radGridView1_MouseDoubleClick(object sender, MouseEventArgs e)
{
cancelChanging = false;

RadElement element = this.radGridView1.Behavior.GetHoveredRadElement();

while (element != null)
{
if (element.GetType() == typeof(RadScrollBarElement))
{
cancelChanging = true;
break;
}
element = element.Parent;
}
}
Declined
Last Updated: 20 Mar 2014 07:21 by ADMIN
To reproduce:

Add a RadGridView and bind it to a DataTable.

Subscribe to the TableElement's vertical scroll's ValueChanged event and add new data when the value reaches the maximum:

private void RequestData(int startFrom, int count) { for (int i = 0; i < count; i++) { DataRow row = dt.NewRow(); row["ID"] = startFrom + i; dt.Rows.Add(row); } } private void VScrollBar_ValueChanged(object sender, EventArgs e) { if (dgwData.TableElement.VScrollBar.Value + dgwData.TableElement.VScrollBar.LargeChange >= dgwData.TableElement.VScrollBar.Maximum) { int maxVScrollBarBefore = dgwData.TableElement.VScrollBar.Maximum; dgwData.SelectionChanged -= dgwData_SelectionChanged; dgwData.TableElement.VScrollBar.ValueChanged -= VScrollBar_ValueChanged; RequestData(dt.Rows.Count, rowsToCharge); dgwData.SelectionChanged += dgwData_SelectionChanged; dgwData.TableElement.VScrollBar.ValueChanged += VScrollBar_ValueChanged; } }

You will notice that when you use the mousewheel the scrollbar is being updated, but when you use the arrows it is not.

Workaround: Invoke the UpdateScrollRange method of the TableElement's RowScroller after adding the new data: dgwData.TableElement.RowScroller.UpdateScrollRange();
Declined
Last Updated: 31 Mar 2014 10:12 by ADMIN
ADMIN
Created by: Dess | Tech Support Engineer, Principal
Comments: 1
Category: GridView
Type: Bug Report
2
To reproduce:
- add RadGridView and fill it with data;
- use the following code for saving the layout: string layout;
using (MemoryStream ms = new MemoryStream())
{
    radGridView1.SaveLayout(ms);
    ms.Position = 0;
    byte[] buffer = new byte[ms.Length - 1];

    ms.Read(buffer, 0, buffer.Length);
    layout = Convert.ToBase64String(buffer);
    ms.Close();
}

When you try to load the saved layout, using the following code, DataException is thrown:
using (MemoryStream stream = new MemoryStream(Convert.FromBase64String(layout)))
{
    radGridView1.LoadLayout(stream);
}

Workaround: save the layout in xml file
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: 25 Mar 2014 16:14 by ADMIN
To reproduce:
void grid_RowValidating(object sender, RowValidatingEventArgs e)
{
    e.Cancel = true;
}

Pressing the escape key should cancel the edit mode and revert the value
Declined
Last Updated: 09 Aug 2016 13:51 by ADMIN
There should be a convenient and more straightforward API for accessing the TableElement of a child gridview. Currently, the API is:
void radGridView1_ViewCellFormatting(object sender, CellFormattingEventArgs e)
{
    if (e.CellElement is GridDetailViewCellElement)
    {
        ((GridDetailViewCellElement)e.CellElement).ChildTableElement.RowHeight = 50;
    }
}
Declined
Last Updated: 02 Dec 2015 13:30 by ADMIN
When a mask is set to a GridViewMaskBoxColumn and string is applied as value, the visual element will show only the string without the mask literals. E.g. mask is set to ####/# and value is set to string "11112" the view will be 11112 instead of 1111/2.

Ways to achieve this: 
1. Use CellFormatting.
2. Use a custom type converter:
Example of a custom TypeConverter could be seen from the following feedback item: http://feedback.telerik.com/Project/154/Feedback/Details/112463-fix-radgridview-the-textmaskformat-property-of-gridviewmaskboxcolumn-is-not-ta
Declined
Last Updated: 15 Sep 2015 13:21 by ADMIN
Deleting a Template in the Property Builder does work.
Declined
Last Updated: 12 Sep 2015 08:55 by ADMIN
1. Create a new project with RadGridView.
2. Bind it and set grouping.
3. Add a summary row and set ShowParentGroupSummaries property to true.
4. Handle the ViewCellFormatting event and set all summary rows to be IsVisible = false when the processed cell is GridSummaryCellElement:

void radGridView1_ViewCellFormatting(object sender, CellFormattingEventArgs e)
{
    if (e.CellElement is GridSummaryCellElement)
    {
        e.Row.IsVisible = false;
    }
}

CORRECT WAY TO HANDLE THIS CASE:
Hide the summary rows in the groups you want after grouping/data binding.
To hide the first bottom summary row of the first group in a RadGridView use the following code:
this.radGridView1.Groups[0].GroupRow.BottomSummaryRows[0].IsVisible = false;
Declined
Last Updated: 11 Dec 2015 13:46 by ADMIN
The PDF exporting of RadGridView does not work correctly for Arabic text. The exported result revers the Arabic text.
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