Completed
Last Updated: 11 Dec 2015 14:05 by ADMIN
To reproduce:
Add a RadGridView and fill it with data. Set the first column's IsVisible property to false. Right click over the row to Copy the row content and paste it in Excel. All data is in a single cell. The Clipboard content does not contain the corresponding <TABLE><TR> tags.

Note: if the last columns is hidden, the line-breaks in the copied text are missing.

Workaround: create custom RadGridView and replace the wrong content in the Clipboard:
public class CustomGrid : RadGridView
{
    protected override RadGridViewElement CreateGridViewElement()
    {
        return new CustomRadGridViewElement();
    }
}

public class CustomRadGridViewElement : RadGridViewElement
{
    protected override MasterGridViewTemplate CreateTemplate()
    {
        return new CustomMasterGridViewTemplate();
    }
}

public class CustomMasterGridViewTemplate : MasterGridViewTemplate
{
    public override void Copy()
    {
        base.Copy();
        
        if (Clipboard.ContainsData(DataFormats.Html))
        {
            string data = Clipboard.GetData(DataFormats.Html).ToString();
            StringBuilder sb = new StringBuilder(data);
            if (!data.Contains("<TABLE>"))
            {
                int insertIndex = data.IndexOf("<TD>");
                sb.Insert(insertIndex, "<TABLE><TR>");
            }
            else if (!data.Contains("</TABLE>"))
            {
                int insertIndex = data.LastIndexOf("<TD>");
                sb.Insert(insertIndex, "</TR></TABLE>");
            }
            
            Clipboard.SetData(DataFormats.Html, sb.ToString());
        }
    }
}
Completed
Last Updated: 10 Sep 2015 11:03 by ADMIN
To reproduce:
- Subscribe to the following RowsChanged event handler:

void radGridView1_RowsChanged(object sender, GridViewCollectionChangedEventArgs e)
{
    if (e.Action == NotifyCollectionChangedAction.ItemChanged)
    {
        GridViewDataRowInfo updrow = (GridViewDataRowInfo)e.NewItems[0];
        GridViewDataRowInfo oldrow = (GridViewDataRowInfo)e.OldItems[0];

        if (updrow.Cells[2].Value != oldrow.Cells[2].Value)
        {
            Console.WriteLine(updrow.Cells[2].Value);
            Console.WriteLine(oldrow.Cells[2].Value);
        }
    }
}

- You will notice that both values are always equal.

Workaround:
The CellValidating event can be used instead.
 
Completed
Last Updated: 01 Oct 2014 12:58 by ADMIN
Workaround: 
void radGridView1_PrintCellFormatting(object sender, PrintCellFormattingEventArgs e)
{
    if (e.Column is GridViewImageColumn && e.Row is GridViewDataRowInfo)
    {
        e.PrintCell.DrawFill = true;
 
        if (radGridView1.PrintStyle.PrintAlternatingRowColor && e.Row.Index % 2 == 1)
        {
            e.PrintCell.BackColor = radGridView1.PrintStyle.AlternatingRowColor;
        }
        else
        {
            e.PrintCell.BackColor = radGridView1.PrintStyle.CellBackColor;
        }
    }
}
Completed
Last Updated: 22 May 2014 11:40 by ADMIN
To reproduce: add a RadGridView and bind it to the Northwind.Products data table. Use the following code:

private void Form1_Load(object sender, EventArgs e)
{
    this.productsTableAdapter.Fill(this.nwindDataSet.Products);

    RadMessageBox.Show(string.Format("TOTAL2 = {0}", NewExpression()));
}

public string NewExpression()
{
    this.radGridView1.Columns.Add(new GridViewDecimalColumn("TOTAL1") { Expression = "ReorderLevel + UnitsOnOrder" });
    this.radGridView1.Columns.Add(new GridViewDecimalColumn("TOTAL2") { Expression = "TOTAL1 + UnitPrice" });
    
    //uncomment to get the value of "TOTAL2"
    // var total1 = this.radGridView1.Rows[2].Cells["TOTAL1"].Value;

    var total2 = this.radGridView1.Rows[2].Cells["TOTAL2"].Value;

    return total2.ToString();
}

It  is not possible to access the column value ("TOTAL2") before firstly to access the column "TOTAL1" value.
Completed
Last Updated: 21 May 2014 14:47 by ADMIN
To reproduce:
- Add grid with enabled paging and filtering to a blank form.
- Select the second page and apply a filter.
Completed
Last Updated: 11 Dec 2015 14:55 by ADMIN
ADMIN
Created by: Dess | Tech Support Engineer, Principal
Comments: 4
Category: GridView
Type: Feature Request
1

			
Completed
Last Updated: 12 Jun 2014 19:35 by ADMIN
To reproduce:

public Form1()
{
    InitializeComponent();
    
    radGridView1.Columns.Add("Id");
    radGridView1.Columns.Add("ParentID");
    radGridView1.Columns.Add("Name");

    radGridView1.Relations.AddSelfReference(radGridView1.MasterTemplate, "Id", "ParentID");

    for (int id = 1; id <= 3; id++)
    {
        radGridView1.MasterTemplate.Rows.Add(id, 0, "Node_" + id);
        for (int iChild = 1; iChild <= 5; iChild++)
        {
            int childId = id * 100 + iChild;
            radGridView1.MasterTemplate.Rows.Add(childId, id, "ChildNode_" + childId);
        }
    }
    foreach (GridViewHierarchyRowInfo row in this.radGridView1.Rows)
    {
       row.IsExpanded = true;
    }
}
Completed
Last Updated: 03 Aug 2014 21:45 by KennethMoss
To reproduce:
- Add the following column to a blank grid and new row or edit the existing one:
GridViewMaskBoxColumn maskBoxColumn = new GridViewMaskBoxColumn();
maskBoxColumn.Name = "Dates";
maskBoxColumn.HeaderText = "Dates";
maskBoxColumn.MaskType = MaskType.FreeFormDateTime;
maskBoxColumn.DataType = typeof(System.DateTime);
radGridView1.MasterTemplate.Columns.Add(maskBoxColumn);
this.radGridView1.Rows.Add(DateTime.Now.AddDays(5));


Completed
Last Updated: 19 Oct 2015 08:05 by ADMIN
To reproduce: 
1. Add a RadGridView and bind it to Northwind.Products table.
2. Use the following code:

 Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
     Me.ProductsTableAdapter.Fill(Me.NwindDataSet.Products)
     For Each col As GridViewColumn In Me.RadGridView1.Columns
         If Not col.HeaderText = "SupplierID" AndAlso Not col.HeaderText = "ProductID" Then
             col.ReadOnly = True
         End If
     Next
     Me.RadGridView1.AddNewRowPosition = SystemRowPosition.Bottom
 End Sub

 Private Sub RadGridView1_CellValidating(sender As Object, e As CellValidatingEventArgs) Handles RadGridView1.CellValidating
     If e.Value Is Nothing Then
         If MessageBox.Show("Incorrect", "error", MessageBoxButtons.OKCancel) = Windows.Forms.DialogResult.OK Then
             e.Cancel = True
         End If
     End If
 End Sub

3. Run the project and go to the new row ,cell "SupplierID".
4. Clear the value and press Tab key. As a result the message box for error indication is shown twice.

Workaround:
'register the custom row  behavior
Dim gridBehavior As BaseGridBehavior = TryCast(RadGridView1.GridBehavior, BaseGridBehavior)
gridBehavior.UnregisterBehavior(GetType(GridViewNewRowInfo))
gridBehavior.RegisterBehavior(GetType(GridViewNewRowInfo), New MyNewRowBehavior())

Me.RadGridView1.GridViewElement.Navigator = New MyGridNavigator()


Public Class MyNewRowBehavior
Inherits GridNewRowBehavior
    Protected Overrides Function ProcessTabKey(keys As KeyEventArgs) As Boolean
        If Me.GridControl.AddNewRowPosition = SystemRowPosition.Bottom AndAlso _
        Me.GridControl.IsInEditMode AndAlso Me.GridViewElement.Navigator.IsLastColumn(GridViewElement.CurrentColumn) Then
            Me.GridControl.Tag = "SuspendValidation"
        End If
        Return MyBase.ProcessTabKey(keys)
    End Function
End Class

Public Class MyGridNavigator
Inherits BaseGridNavigator
    Public Overrides Function SelectFirstColumn() As Boolean
        If Me.GridViewElement.GridControl.Tag = "SuspendValidation" Then
            Me.GridViewElement.GridControl.Tag = Nothing
            Return False
        End If
        Return MyBase.SelectFirstColumn()
    End Function
End Class
Completed
Last Updated: 20 Oct 2014 14:15 by ADMIN
To reproduce:
- Set  EnterKeyMode to EnterMovesToNextRow.
- Enter an invalid value in the first cell and press enter two times.
- Enter valid value and press enter again.
- You will notice that the current row is moved appropriately.
Completed
Last Updated: 31 Aug 2015 10:11 by ADMIN
To reproduce:
- Add a grid to a blank form.
- Group the grid on a single column and expand a group row.
- Add and then remove a summary row by calling the clear method.
- You will notice that the summary row is not removed.


Workaround: reset the groups after the summary rows are cleared:
radGridView1.SummaryRowsBottom.Clear();
 
List<GroupDescriptor> list = new List<GroupDescriptor>();
 
foreach (var item in radGridView1.GroupDescriptors)
{
    list.Add(item);
}
 
radGridView1.GroupDescriptors.Clear();
radGridView1.MasterTemplate.Refresh();
 
foreach (var item in list)
{
    radGridView1.GroupDescriptors.Add(item);
}
 
 radGridView1.MasterTemplate.Refresh();
Completed
Last Updated: 16 Oct 2014 14:58 by ADMIN
To reproduce: add a RadGridView and bind it to Employees data table. Use the following code snippet:

Me.RadGridView1.EnableGrouping = True
Me.RadGridView1.EnableFiltering = True

Dim summaryItem As New GridViewSummaryItem()
summaryItem.Name = "Address"
summaryItem.Aggregate = GridAggregateFunction.Count

Dim summaryRowItem As New GridViewSummaryRowItem()
summaryRowItem.Add(summaryItem)

Me.RadGridView1.SummaryRowsTop.Add(summaryRowItem)
Me.RadGridView1.MasterTemplate.ShowParentGroupSummaries = True

1. Group by "Title" and expand "Sales Representative" group.
2. Group by "Country" and "City".
3.Expand "Sales Representative" group >> "UK" sub-group >> "London" sub-group. You will notice that the summary row shows "3", because you actually have 3 employees in "London" group.
4.Filter by "FirstName" (Contains: "a" for example). As a result 2 employess will remain in  "London" group, but the summary row will continue displaying "3".

The attached gif file illustrates better the described behavior.

Workaround: in the FilterChanged event store the applied GroupDescriptors, clear the RadGridView.GroupDescriptors collection, and add again the stored descriptors. Note that it is necessary to store the expanded groups and restore their state as well.
Completed
Last Updated: 09 Oct 2014 15:50 by ADMIN
RadDateTimeEditor the entire date cannot be selected when the editor is initialized.
Completed
Last Updated: 11 Dec 2015 14:05 by ADMIN
To reproduce:
- Bind the grid to a binding list of custom property which has a bool value.
- Add a filter that shows only false values.
- Change some (more than one) of the underlying values to true.
- You will notice that the rows with the new value are still visible.
Completed
Last Updated: 11 Nov 2014 11:25 by Chris Ward
To reproduce:

Set these properties:

radGridView1.SelectionMode = GridViewSelectionMode.FullRowSelect;
radGridView1.MultiSelect = true;

Select a row, hold Ctrl and click the same cell which is selected, you will see that the SelectionChanging event, along with the SelectionChanged one will not be fired.

Workaround:

Use the PropertyChanging event of the rows:

this.Grid.Rows.ToList().ForEach(x => x.PropertyChanging += x_PropertyChanging);

....

void x_PropertyChanging(object sender, Telerik.WinControls.Interfaces.PropertyChangingEventArgsEx e)
{
    if (e.PropertyName == "IsSelected")
    {
    }
}
Completed
Last Updated: 20 Oct 2014 14:37 by ADMIN
To reproduce:
- Bind the grid to an ObservableCollection and set its AddNewBoundRowBeforeEdit property to true.
- Click in the new row and then click back in already added row.
Completed
Last Updated: 11 Nov 2014 09:40 by Takuma
To reproduce:
- Type &1 in a grid cell and then press enter to exit edit mode.
- Press tab for example to move to the next cell.
- Press 1 again you will notice that the digit does not appear in the cell.
Completed
Last Updated: 11 May 2016 14:12 by ADMIN
Currently the Paging functionality does not support server side operations. It should be extended to support them, e.g. with EntityFramework and Telerik Data Access
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);
    }
}
Completed
Last Updated: 04 Dec 2014 14:37 by kultman
To reproduce: use the following code snippet:

DataTable dt = new DataTable();
dt.Columns.Add("Id", typeof(int));
dt.Columns.Add("Name", typeof(string));
dt.Columns.Add("IsActive", typeof(bool));

for (int i = 0; i < 20; i++)
{
    if (i % 5 == 0)
    {
        dt.Rows.Add(i, "Item" + i, true);
    }
    {
        dt.Rows.Add(i, "Item" + i, DBNull.Value);
    }
}

this.radGridView1.DataSource = dt;
this.radGridView1.AutoSizeColumnsMode = GridViewAutoSizeColumnsMode.Fill;
this.radGridView1.EnableFiltering = true;


Try to filter by "Name" column via entering "4". As a result an InvalidCastException occurs.

Workaround: initialize default value for the cells belonging to GridViewCheckBoxColumn with false if  it is DBNull:

foreach (GridViewRowInfo r in this.radGridView1.Rows)
            {
                if (r.Cells["IsActive"].Value == DBNull.Value)
                {
                    r.Cells["IsActive"].Value = false;
                }
            }