Completed
Last Updated: 10 Sep 2015 06:11 by Todor
To reproduce:
Set RadGridView MultiSelect property to true and select several rows. Export RadGridView using GridViewSpreadExport and only current row will be preserved(all selected rows are lost).

Workaround:
Save all selected rows in a collection before the export and after it set saved rows as selected.
List<GridViewRowInfo> selectedRows = new List<GridViewRowInfo>();
foreach (GridViewRowInfo row in this.radGridView1.SelectedRows)
{
    selectedRows.Add(row);
}

// Export

foreach (GridViewRowInfo row in selectedRows)
{
    row.IsSelected = true;
}
Completed
Last Updated: 16 Oct 2015 07:01 by ADMIN
The idea is that one can bring into view a certain row.
Completed
Last Updated: 16 Oct 2015 07:33 by ADMIN
To reproduce: use the attached sample project. Follow the steps illustrated on the attached gif file.

Workaround: keep the vertical scrollbar value and maximum before modifying the child rows and restore them afterwards:

private void gridViewParameter_CellValueChanged(object sender, GridViewCellEventArgs e)
{
   if (e.Column.Name == "Select")
    {
        this.gridViewParameter.CellValueChanged -= gridViewParameter_CellValueChanged;

        GridViewRowInfo selectedRowinfo = e.Row;                  
        if (selectedRowinfo.HasChildRows())
        {
            int scrollValue = this.gridViewParameter.TableElement.VScrollBar.Value;
            int scrollMax = this.gridViewParameter.TableElement.VScrollBar.Maximum;
          
            this._UpdateUiState(selectedRowinfo.ChildRows, Convert.ToBoolean(selectedRowinfo.Cells["Select"].Value));
            
            this.gridViewParameter.TableElement.VScrollBar.Maximum = scrollMax;
            this.gridViewParameter.TableElement.VScrollBar.Value = scrollValue;
        }
        this.gridViewParameter.CellValueChanged += gridViewParameter_CellValueChanged;
    }
}

NOTE: after applying the workaround, there is annoying flickering illustrated on the Flickering.gif file which should be handled if possible.
Completed
Last Updated: 12 Oct 2015 16:07 by ADMIN
To reproduce: use the following code snippet and try to filter the second column:

public Form1()
{
    InitializeComponent();

    this.radGridView1.Columns.Add("Id");
    GridViewDateTimeColumn dateTimeColumn = new GridViewDateTimeColumn();
    dateTimeColumn.FilteringMode = GridViewTimeFilteringMode.Date;
    dateTimeColumn.Name = "NullDateTimeColumn";
    dateTimeColumn.HeaderText = "Order date";
    dateTimeColumn.FieldName = "OrderDate"; 
    dateTimeColumn.FormatString = "{0:dd/MM/yyyy}";
    this.radGridView1.Columns.Add(dateTimeColumn);

    dateTimeColumn = new GridViewDateTimeColumn();
    dateTimeColumn.FilteringMode = GridViewTimeFilteringMode.Date;
    dateTimeColumn.Name = "DateTimeColumn";
    dateTimeColumn.HeaderText = "Not Null Date date";
    dateTimeColumn.FieldName = "NotNullDate";
    dateTimeColumn.FormatString = "{0:dd/MM/yyyy}";
    this.radGridView1.Columns.Add(dateTimeColumn);
    this.radGridView1.AutoSizeColumnsMode = GridViewAutoSizeColumnsMode.Fill;
    for (int i = 0; i < 50; i++)
    {
        if (i % 2 == 0)
        {
            this.radGridView1.Rows.Add(new object[] { i, null, DateTime.Today });
        }
        else
        { 
            this.radGridView1.Rows.Add(new object[] { i, DateTime.Now.AddDays(i), DateTime.Today });
        }
    }
    this.radGridView1.EnableFiltering = true;
    this.radGridView1.MasterTemplate.ShowHeaderCellButtons = true;
    this.radGridView1.MasterTemplate.ShowFilteringRow = false;
}

private void radGridView1_FilterPopupRequired(object sender, FilterPopupRequiredEventArgs e)
{
    e.FilterPopup = new RadListFilterPopup(e.Column, true);
}

Workaround: use a specific DateTime value instead of null (e.g. 1/1/1800) and use the CellFormatting event to clear the displayed text. Afterwards, in the RadListFilterPopup it is necessary to hide the text for the null value date nodes:

public Form1()
{
    InitializeComponent();

    this.radGridView1.Columns.Add("Id");
    GridViewDateTimeColumn dateTimeColumn = new GridViewDateTimeColumn();
    dateTimeColumn.FilteringMode = GridViewTimeFilteringMode.Date;
    dateTimeColumn.Name = "NullDateTimeColumn";
    dateTimeColumn.HeaderText = "Order date";
    dateTimeColumn.FieldName = "OrderDate"; 
    dateTimeColumn.FormatString = "{0:dd/MM/yyyy}";
   
    this.radGridView1.Columns.Add(dateTimeColumn);

    dateTimeColumn = new GridViewDateTimeColumn();
    dateTimeColumn.FilteringMode = GridViewTimeFilteringMode.Date;
    dateTimeColumn.Name = "DateTimeColumn";
    dateTimeColumn.HeaderText = "Not Null Date date";
    dateTimeColumn.FieldName = "NotNullDate";
    dateTimeColumn.FormatString = "{0:dd/MM/yyyy}";
    this.radGridView1.Columns.Add(dateTimeColumn);
    this.radGridView1.AutoSizeColumnsMode = GridViewAutoSizeColumnsMode.Fill;
    for (int i = 0; i < 50; i++)
    {
        if (i % 2 == 0)
        {
            this.radGridView1.Rows.Add(new object[] { i, new DateTime(1800, 1, 1), DateTime.Today });
        }
        else
        { 
            this.radGridView1.Rows.Add(new object[] { i, DateTime.Now.AddDays(i), DateTime.Today });
        }
    }
    this.radGridView1.EnableFiltering = true;
    this.radGridView1.MasterTemplate.ShowHeaderCellButtons = true;
    this.radGridView1.MasterTemplate.ShowFilteringRow = false;
}

private void radGridView1_FilterPopupRequired(object sender, FilterPopupRequiredEventArgs e)
{
    RadListFilterPopup popup = new RadListFilterPopup(e.Column, true);
    e.FilterPopup = popup;
    popup.PopupOpened += popup_PopupOpened;
}

private void popup_PopupOpened(object sender, EventArgs args)
{
    RadListFilterPopup popup = sender as RadListFilterPopup;
    if (popup != null)
    {
        popup.MenuTreeElement.TreeView.NodeFormatting += TreeView_NodeFormatting;
        popup.MenuTreeElement.TreeView.Focus();
    }
}

private void TreeView_NodeFormatting(object sender, TreeNodeFormattingEventArgs e)
{
    if (e.NodeElement.ContentElement.Text.Contains("1800"))
    {
        e.NodeElement.ContentElement.DrawText = false;
        e.NodeElement.ExpanderElement.Opacity = 0;
        e.NodeElement.ExpanderElement.ShouldHandleMouseInput = false;
        e.NodeElement.ShouldHandleMouseInput = false;
    }
    else
    { 
        e.NodeElement.ContentElement.DrawText = true;
        e.NodeElement.ExpanderElement.Opacity = 1;
        e.NodeElement.ExpanderElement.ShouldHandleMouseInput = true;
        e.NodeElement.ShouldHandleMouseInput = true;
    }
}

private void radGridView1_CellFormatting(object sender, CellFormattingEventArgs e)
{
    GridViewDateTimeColumn dtCol = e.Column as GridViewDateTimeColumn;
    if (e.Row is GridViewDataRowInfo && dtCol != null && ((DateTime)e.CellElement.Value).Year == 1800)
    {
        e.CellElement.Text = string.Empty;
    }
}
Declined
Last Updated: 22 Oct 2015 09:57 by ADMIN
ADMIN
Created by: Dess | Tech Support Engineer, Principal
Comments: 1
Category: GridView
Type: Bug Report
0
To reproduce: use the following code snippet and click the button twice.

private DataTable GetTable01()
{
    DataTable table = new DataTable();
    table.Columns.Add("Dosage", typeof(int));
    table.Columns.Add("Drug", typeof(string));
    table.Columns.Add("Patient", typeof(string));
    table.Columns.Add("Date", typeof(DateTime));

    // Here we add five DataRows.
    table.Rows.Add(25, "Indocin", "David", DateTime.Now);
    table.Rows.Add(50, "Enebrel", "Sam", DateTime.Now);
    table.Rows.Add(10, "Hydralazine", "Christoff", DateTime.Now);
    table.Rows.Add(21, "Combivent", "Janet", DateTime.Now);
    table.Rows.Add(100, "Dilantin", "Melanie", DateTime.Now);

    return table;
}

private void button1_Click_1(object sender, EventArgs e)
{
    DataTable table01 = GetTable01();

    radGridView1.Rows.Clear(); 

    radGridView1.DataSource = table01;
}

WORKAROUND I:
this.radGridView1.DataError += radGridView1_DataError;

private void radGridView1_DataError(object sender, GridViewDataErrorEventArgs e)
{
    if (e.Exception is ArgumentException && e.Exception.Message == "Cannot clear this list.")
    {
        this.radGridView1.BeginUpdate();

        while (this.radGridView1.Rows.Count > 0)
        {
            this.radGridView1.Rows.RemoveAt(0);
        }

        this.radGridView1.EndUpdate();
    }
}

WORKAROUND II:
 while (this.radGridView1.Rows.Count > 0)
{               
     this.radGridView1.Rows.RemoveAt(this.radGridView1.Rows.Count - 1);
}
Completed
Last Updated: 21 Oct 2015 11:15 by ADMIN
To reproduce:
public RadForm1()
{
    InitializeComponent();
    Controls.Add(new RadGridView
    {
        Dock = DockStyle.Fill,
        ShowHeaderCellButtons = true,
        ReadOnly = true,
        AutoSizeColumnsMode = GridViewAutoSizeColumnsMode.Fill,
        EnableFiltering = true,
        DataSource = Enumerable.Range(0, 24000) //Increase this number when you can't reproduce this issue
        .Select(x => new { Name = string.Format("Item {0}", x) }),
    });
}

Workaround:
class MyListFillter : RadListFilterPopup
{
    public MyListFillter(GridViewDataColumn column, bool groupDateValues) : base(column, groupDateValues)
    {
    }

    protected override void OnButtonOkClick(EventArgs e)
    {
        FilterOperator filterOperator = FilterOperator.IsEqualTo;
        var listFilterElement = typeof(RadListFilterPopup).GetField("listFilterElement", BindingFlags.NonPublic | BindingFlags.Instance).GetValue(this) as FilterMenuTreeElement;

        switch (listFilterElement.SelectedMode)
        {
            case ListFilterSelectedMode.All:
                filterOperator = FilterOperator.None;
                break;
            case ListFilterSelectedMode.Null:
                filterOperator = FilterOperator.IsNull;
                break;
            case ListFilterSelectedMode.NotNull:
                filterOperator = FilterOperator.IsNotNull;
                break;
        }

        if (filterOperator != FilterOperator.IsEqualTo)
        {
            SetFilterOperator(filterOperator);
            this.ClosePopup(RadPopupCloseReason.CloseCalled);
        }
        else
        {
            CompositeFilterDescriptor compositeFilterDescriptor = new CompositeFilterDescriptor();
            compositeFilterDescriptor.PropertyName = base.DataColumn.Name;
            compositeFilterDescriptor.LogicalOperator = FilterLogicalOperator.Or;
           
            if (listFilterElement.SelectedValues.Count > this.GetDistinctValuesTable().Count / 2)
            {                    
                foreach (DictionaryEntry entry in this.GetDistinctValuesTable())
                {
                    if (!listFilterElement.SelectedValues.Contains(entry.Key))
                    {
                        foreach (object value in (ArrayList)entry.Value)
                        {
                            FilterDescriptor descriptor;
                            if (base.DataColumn is GridViewDateTimeColumn || base.DataColumn.DataType == typeof(DateTime) ||
                                base.DataColumn.DataType == typeof(DateTime?))
                            {
                                descriptor = new DateFilterDescriptor(base.DataColumn.Name, FilterOperator.IsNotEqualTo, (DateTime?)value, false);
                            }
                            else
                            {
                                descriptor = new FilterDescriptor(base.DataColumn.Name, FilterOperator.IsNotEqualTo, value);
                            }
                            compositeFilterDescriptor.FilterDescriptors.Add(descriptor);
                        }
                    }
                }
            }
            else
            {
                foreach (DictionaryEntry entry in listFilterElement.SelectedValues)
                {
                    foreach (object value in (ArrayList)entry.Value)
                    {
                        FilterDescriptor descriptor;
                        if (base.DataColumn is GridViewDateTimeColumn || base.DataColumn.DataType == typeof(DateTime) ||
                            base.DataColumn.DataType == typeof(DateTime?))
                        {
                            descriptor = new DateFilterDescriptor(base.DataColumn.Name, FilterOperator.IsEqualTo, (DateTime?)value, false);
                        }
                        else
                        {
                            descriptor = new FilterDescriptor(base.DataColumn.Name, FilterOperator.IsEqualTo, value);
                        }
                        compositeFilterDescriptor.FilterDescriptors.Add(descriptor);
                    }
                }
            }
            base.FilterDescriptor = compositeFilterDescriptor;
            OnFilterConfirmed();
        }
    }
}
Completed
Last Updated: 20 Oct 2015 13:41 by ADMIN
To reproduce:
1 - Add a grid view in a form.
2 - Add 14 - 17 records in grid view.
3 - Allow alternating color for grid view.
4 - Do sorting by clicking on header column (click 3 times).
5 - Alternating color display wrong position.

Workaround:
void radGridView1_SortChanged(object sender, GridViewCollectionChangedEventArgs e)
{
    foreach (GridRowElement row in this.radGridView1.TableElement.ViewElement.ScrollableRows.Children)
    {
        row.Synchronize();
    } 
}
Completed
Last Updated: 04 Feb 2016 10:39 by ADMIN
To reproduce:
- Show a message box in the CellValidating event handler.
- Start the application, edit a cell and directly press the vertical scroll bottom arrow.

 
Completed
Last Updated: 13 Oct 2015 09:30 by ADMIN
ADMIN
Created by: Dimitar
Comments: 0
Category: GridView
Type: Bug Report
0
To reproduce:
- Set the grid properties as follows:
    radGridView1.MasterTemplate.AllowAddNewRow = false;
    radGridView1.MasterTemplate.AllowDeleteRow = false;
    radGridView1.MasterTemplate.AllowDragToGroup = false;
    radGridView1.MasterTemplate.AllowEditRow = false;
    radGridView1.MasterTemplate.EnableFiltering = true;
    radGridView1.MasterTemplate.EnableGrouping = false;
    radGridView1.MasterTemplate.MultiSelect = true;

- Start the application and drag the filter button without releasing the mouse button.

Workaround:
class MyGridFilterRowBehavior : GridFilterRowBehavior
{
    protected override bool ProcessMouseSelection(Point mousePosition, GridCellElement currentCell)
    {
        if (currentCell is GridFilterCellElement)
        {
            return false;
        }
        return base.ProcessMouseSelection(mousePosition, currentCell);
    }
}

BaseGridBehavior gridBehavior = radGridView1.GridBehavior as BaseGridBehavior;
gridBehavior.UnregisterBehavior(typeof(GridViewFilteringRowInfo));
gridBehavior.RegisterBehavior(typeof(GridViewFilteringRowInfo), new MyGridFilterRowBehavior());

Completed
Last Updated: 13 Oct 2015 09:49 by ADMIN
To reproduce: 
1. Drag and drop RadGridView
2. Open Property Builder
3. Add a column and select it 
4. Open Settings tab and you will see that there are two ampersand symbols 
5. Add template or select Master Template and you will see that there are two ampersand symbols
Completed
Last Updated: 26 Oct 2015 15:39 by ADMIN
ADMIN
Created by: Dess | Tech Support Engineer, Principal
Comments: 0
Category: GridView
Type: Bug Report
0
To reproduce:

public Form1()
{
    InitializeComponent();
    DataTable dt = new DataTable();
    dt.Columns.Add("Col@", typeof(string));
    dt.Rows.Add("Unit");
    this.radGridView1.DataSource = dt;

    this.radGridView1.EnableFiltering = true;
    this.radGridView1.BestFitColumns();
}

Workaround: modify the Name of each column in order to remove the "@" symbol:

foreach (GridViewColumn c in this.radGridView1.Columns)
            {
                c.Name = c.Name.Replace("@", "");
            }
Completed
Last Updated: 15 Oct 2015 11:57 by ADMIN
To reproduce:

for (int i = 0; i < 5; i++)
{
    this.radGridView1.Columns.Add("Col" + i);
}

ColumnGroupsViewDefinition columnGroupsView = new ColumnGroupsViewDefinition();
columnGroupsView.ColumnGroups.Add(new GridViewColumnGroup());
columnGroupsView.ColumnGroups.Add(new GridViewColumnGroup());
columnGroupsView.ColumnGroups.Add(new GridViewColumnGroup());
columnGroupsView.ColumnGroups.Add(new GridViewColumnGroup());


columnGroupsView.ColumnGroups[0].Rows.Add(new GridViewColumnGroupRow());
columnGroupsView.ColumnGroups[0].Rows[0].ColumnNames.Add("Col3");


columnGroupsView.ColumnGroups[1].Rows.Add(new GridViewColumnGroupRow());
columnGroupsView.ColumnGroups[1].Rows[0].ColumnNames.Add("Col2");
columnGroupsView.ColumnGroups[2].Rows.Add(new GridViewColumnGroupRow());
columnGroupsView.ColumnGroups[2].Rows.Add(new GridViewColumnGroupRow());
columnGroupsView.ColumnGroups[2].Rows[0].ColumnNames.Add("Col0");
columnGroupsView.ColumnGroups[2].Rows[1].ColumnNames.Add("Col1");

columnGroupsView.ColumnGroups[3].Rows.Add(new GridViewColumnGroupRow());  
columnGroupsView.ColumnGroups[3].Rows[0].ColumnNames.Add("Col4");

this.radGridView1.ViewDefinition = columnGroupsView;

this.radGridView1.Columns["Col2"].Width = 150;
this.radGridView1.Columns["Col0"].Width = 200;


Workaround: either set the columns width before setting the RadGridView.ViewDefinition or call the TableElement.ViewElement.RowLayout.InvalidateRenderColumn after specifying the width.
Completed
Last Updated: 13 Oct 2015 10:05 by ADMIN
How to reproduce:
public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();

        this.radGridView1.DataSource = this.GetData();
        this.radGridView1.AutoSizeColumnsMode = Telerik.WinControls.UI.GridViewAutoSizeColumnsMode.Fill
    }
    private DataTable GetData()
    {
        DataTable dt = new DataTable();
        dt.Columns.Add("Id", typeof(int));
        dt.Columns.Add("Name", typeof(string));
        dt.Columns.Add("Age", typeof(int));
        dt.Columns.Add("Date", typeof(DateTime));
        dt.Columns.Add("Bool", typeof(bool));
        for (int i = 0; i < 100; i++)
        {
            dt.Rows.Add(i, "Name " + i, i + 10, DateTime.Now.AddMinutes(i), i % 2 == 0 ? true : false);
        }

        return dt;
    }

    private void radButton1_Click(object sender, EventArgs e)
    {
        this.radGridView1.Columns[1].Expression = "Id * Age";
    }

    private void radButton2_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 radButton3_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: iterate the columns prior to loading the layout and remove the expressions
private void radButton3_Click(object sender, EventArgs e)
{
    foreach (GridViewDataColumn col in this.radGridView1.Columns)
    {
        col.Expression = "";
    }

    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);
}
Completed
Last Updated: 14 Oct 2015 06:13 by ADMIN
To reproduce:

ColumnGroupsViewDefinition columnGroupsView;
 
columnGroupsView = new ColumnGroupsViewDefinition();
columnGroupsView.ColumnGroups.Add(new GridViewColumnGroup());
columnGroupsView.ColumnGroups.Add(new GridViewColumnGroup());
columnGroupsView.ColumnGroups.Add(new GridViewColumnGroup());
columnGroupsView.ColumnGroups.Add(new GridViewColumnGroup());

columnGroupsView.ColumnGroups[0].Rows.Add(new GridViewColumnGroupRow());
columnGroupsView.ColumnGroups[0].Rows[0].ColumnNames.Add("colPINNED_LEFT");

columnGroupsView.ColumnGroups[1].Rows.Add(new GridViewColumnGroupRow());
columnGroupsView.ColumnGroups[1].Rows[0].ColumnNames.Add("colDATE");
columnGroupsView.ColumnGroups[2].Rows.Add(new GridViewColumnGroupRow());
columnGroupsView.ColumnGroups[2].Rows.Add(new GridViewColumnGroupRow());
columnGroupsView.ColumnGroups[2].Rows[0].ColumnNames.Add("colTITLE");
columnGroupsView.ColumnGroups[2].Rows[1].ColumnNames.Add("colTEXT");

columnGroupsView.ColumnGroups[3].Rows.Add(new GridViewColumnGroupRow()); 

columnGroupsView.ColumnGroups[3].Rows[0].ColumnNames.Add("colPINNED_RIGHT");

this.radGridView1.ViewDefinition = columnGroupsView;

this.radGridView1.Columns["colDATE"].Width = 110;
this.radGridView1.Columns["colTITLE"].Width = this.radGridView1.Width - 181;

this.radGridView1.TableElement.ViewElement.RowLayout.InvalidateRenderColumns();

columnGroupsView.ColumnGroups[0].PinPosition = PinnedColumnPosition.Left;  
columnGroupsView.ColumnGroups[3].PinPosition = PinnedColumnPosition.Right;
Completed
Last Updated: 14 Oct 2015 06:42 by ADMIN
To reproduce:

public Form1()
{
    InitializeComponent();

    ColumnGroupsViewDefinition columnGroupsView;
     
    columnGroupsView = new ColumnGroupsViewDefinition();
    columnGroupsView.ColumnGroups.Add(new GridViewColumnGroup());
    columnGroupsView.ColumnGroups.Add(new GridViewColumnGroup());
    columnGroupsView.ColumnGroups.Add(new GridViewColumnGroup());
    columnGroupsView.ColumnGroups.Add(new GridViewColumnGroup());

    columnGroupsView.ColumnGroups[0].ShowHeader = false;

    columnGroupsView.ColumnGroups[0].Rows.Add(new GridViewColumnGroupRow());
    columnGroupsView.ColumnGroups[0].Rows[0].ColumnNames.Add("colPINNED_LEFT");

    columnGroupsView.ColumnGroups[1].Rows.Add(new GridViewColumnGroupRow());
    columnGroupsView.ColumnGroups[1].Rows[0].ColumnNames.Add("colDATE");
    columnGroupsView.ColumnGroups[2].Rows.Add(new GridViewColumnGroupRow());
    columnGroupsView.ColumnGroups[2].Rows.Add(new GridViewColumnGroupRow());
    columnGroupsView.ColumnGroups[2].Rows[0].ColumnNames.Add("colTITLE");
    columnGroupsView.ColumnGroups[2].Rows[1].ColumnNames.Add("colTEXT");
   
    columnGroupsView.ColumnGroups[3].Rows.Add(new GridViewColumnGroupRow()); 

    columnGroupsView.ColumnGroups[3].Rows[0].ColumnNames.Add("colPINNED_RIGHT");

    this.radGridView1.ViewDefinition = columnGroupsView;

    this.radGridView1.Columns["colDATE"].Width = 110;
    this.radGridView1.Columns["colTITLE"].Width = this.radGridView1.Width - 181;

    this.radGridView1.TableElement.ViewElement.RowLayout.InvalidateRenderColumns();
    
    columnGroupsView.ColumnGroups[0].PinPosition = PinnedColumnPosition.Left;  
    columnGroupsView.ColumnGroups[3].PinPosition = PinnedColumnPosition.Right; 
    
}

Workaround: do not set the ShowHeader property to false. Use the ViewCellFormatting event to hide to necessary cell borders to simulate cells merging.
Completed
Last Updated: 12 Dec 2015 09:23 by ADMIN
To reproduce:

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load 
    Me.CustomersTableAdapter.Fill(Me.NwindDataSet.Customers) 
    Dim view As New ColumnGroupsViewDefinition()
    view.ColumnGroups.Add(New GridViewColumnGroup("Customer Contact"))
    view.ColumnGroups.Add(New GridViewColumnGroup("Details"))
    view.ColumnGroups(1).Groups.Add(New GridViewColumnGroup("Address"))
    view.ColumnGroups(1).Groups.Add(New GridViewColumnGroup("Contact"))
    view.ColumnGroups(0).Rows.Add(New GridViewColumnGroupRow())
    view.ColumnGroups(0).Rows(0).Columns.Add(Me.RadGridView1.Columns("CompanyName"))
    view.ColumnGroups(0).Rows(0).Columns.Add(Me.RadGridView1.Columns("ContactName"))
    view.ColumnGroups(0).Rows(0).Columns.Add(Me.RadGridView1.Columns("ContactTitle"))

    view.ColumnGroups(1).Groups(0).Rows.Add(New GridViewColumnGroupRow())
    view.ColumnGroups(1).Groups(0).Rows(0).Columns.Add(Me.RadGridView1.Columns("Address"))
    view.ColumnGroups(1).Groups(0).Rows(0).Columns.Add(Me.RadGridView1.Columns("City"))
    view.ColumnGroups(1).Groups(0).Rows(0).Columns(1).RowSpan = 40
    view.ColumnGroups(1).Groups(0).Rows(0).Columns.Add(Me.RadGridView1.Columns("Country"))

    view.ColumnGroups(1).Groups(1).Rows.Add(New GridViewColumnGroupRow())
    view.ColumnGroups(1).Groups(1).Rows(0).Columns.Add(Me.RadGridView1.Columns("Phone"))
    view.ColumnGroups(1).Groups(1).Rows(0).Columns.Add(Me.RadGridView1.Columns("Fax"))

    RadGridView1.ViewDefinition = view
    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.MasterView.SummaryRows(0).PinPosition = PinnedRowPosition.Top
    Me.RadGridView1.MasterView.SummaryRows(0).Height = 20
End Sub


Workaround: use the ViewCellFormatting event and set the TextAlignment property to MiddleTop for the summary cells.
Completed
Last Updated: 14 Oct 2015 08:04 by ADMIN
Workaround: use a GridPrintStyle and define a HierarchyIndent = 0
private void PrintGrid()
{
    GridPrintStyle style = new GridPrintStyle();
    style.HierarchyIndent = 0;
    this.radGridView1.PrintStyle = style;
    this.radGridView1.PrintPreview();
}
Unplanned
Last Updated: 15 Aug 2017 10:02 by ADMIN
Completed
Last Updated: 29 Oct 2015 08:26 by ADMIN
To reproduce:

1. Use the following code:
private void Form1_Load(object sender, EventArgs e)
{
    this.customersTableAdapter.Fill(this.nwindDataSet.Customers);

    this.radGridView1.DataSource = customersBindingSource;
    this.radGridView1.AutoSizeColumnsMode = Telerik.WinControls.UI.GridViewAutoSizeColumnsMode.Fill;
    this.radGridView1.CellEndEdit += radGridView1_CellEndEdit;
    this.radGridView1.AutoSizeRows = true;
    SortDescriptor descriptor = new SortDescriptor();
    descriptor.PropertyName = "Country"; 
    descriptor.Direction = ListSortDirection.Ascending;
    this.radGridView1.MasterTemplate.SortDescriptors.Add(descriptor);
}

void radGridView1_CellEndEdit(object sender, Telerik.WinControls.UI.GridViewCellEventArgs e)
{
    int selectedRowIndex = this.radGridView1.ChildRows.IndexOf(this.radGridView1.CurrentRow);
    this.radGridView1.TableElement.ScrollToRow(selectedRowIndex);
}

2. Modify cell value in the sorted column. After the editor value is confirmed by pressing Enter, you scroll to the current column. However, you do not observe the expected behavior.

Workaround: set the AutoSizeRows property to false.