Completed
Last Updated: 13 Mar 2015 14:31 by ADMIN
To reproduce:
- Enable the search row in the grid.
- Enter some text in the search text box in order to mark some rows.
- Refresh the master template.
- Notice that the text is cleared, but the formatting remains.

Workaround, use the following custom cell:

      class MyGridSearchCellElement : GridSearchCellElement
        {
            public MyGridSearchCellElement(GridViewColumn column, GridRowElement row)
                :base (column, row)
            {

            }
            bool performSearch = true;
            protected override void SyncLabelText()
            {
                //base.SyncLabelText();

                GridViewSearchRowInfo searchRow = this.RowInfo as GridViewSearchRowInfo;

                if (searchRow == null)
                {
                    return;
                }

                performSearch = false;

                string searchCriteria = typeof(GridViewSearchRowInfo).GetField("searchCriteria", BindingFlags.NonPublic | BindingFlags.Instance).GetValue(searchRow).ToString();

                if (string.IsNullOrEmpty(searchCriteria))
                {
                    this.SearchTextBox.Text = String.Empty;
                    this.SearchTextBox.SearchInfoLabel.Text = String.Empty;
                }
                else
                {
                    this.SearchTextBox.Text = searchCriteria;
                    this.SearchTextBox.SearchInfoLabel.Text = string.Format("{0} {1} {2}", searchRow.CurrentResultIndex + 1, Telerik.WinControls.UI.Localization.RadGridLocalizationProvider.CurrentProvider.GetLocalizedString(Telerik.WinControls.UI.Localization.RadGridStringId.SearchRowResultsOfLabel), searchRow.CurrentSearchResultsCount);
                }

                performSearch = true;
            }

            protected override void Search()
            {
                if (!performSearch)
                {
                    return;
                }

                base.Search();
            }
        }


To put it in action, use the CreateCell event of RadGridView:
 void radGridView1_CreateCell(object sender, GridViewCreateCellEventArgs e)
        {
            if (e.CellType == typeof( GridSearchCellElement))
            {
                e.CellElement = new MyGridSearchCellElement(e.Column, e.Row);
            }
        }
Completed
Last Updated: 13 Oct 2015 10:19 by ADMIN
To reproduce: use the following code snippet and follow the steps in the attached gif file.

private void Form1_Load(object sender, EventArgs e)
{
    this.order_DetailsTableAdapter.Fill(this.nwindDataSet.Order_Details);
    this.ordersTableAdapter.Fill(this.nwindDataSet.Orders);
    radGridView1.AutoGenerateHierarchy = true;
    radGridView1.DataSource = this.nwindDataSet;
    radGridView1.DataMember = "Orders";
    radGridView1.MasterTemplate.AutoSizeColumnsMode = GridViewAutoSizeColumnsMode.Fill;
    radGridView1.MasterTemplate.Templates.First().AutoSizeColumnsMode = GridViewAutoSizeColumnsMode.Fill;
    radGridView1.EnablePaging = true;

    radGridView1.MasterTemplate.Templates.First().EnableFiltering = true;
    FilterDescriptor fd = new FilterDescriptor();
    fd.PropertyName = "UnitPrice";
    fd.Operator = FilterOperator.IsGreaterThan;
    fd.Value = 40;
    radGridView1.MasterTemplate.Templates.First().FilterDescriptors.Add(fd);
    
    radGridView1.MouseDown += radGridView1_MouseDown;
}

private void radGridView1_MouseDown(object sender, MouseEventArgs e)
{
    GridDetailViewCellElement detailCell = radGridView1.ElementTree.GetElementAtPoint(e.Location) as GridDetailViewCellElement;
    if (detailCell != null)
    {
        radGridView1.MasterTemplate.Templates.First().FilterDescriptors.Clear();
    }
}


Workaround:

private void radGridView1_MouseDown(object sender, MouseEventArgs e)
{
    GridDetailViewCellElement detailCell = radGridView1.ElementTree.GetElementAtPoint(e.Location) as GridDetailViewCellElement;
    if (detailCell != null)
    {
        radGridView1.MasterTemplate.Templates.First().FilterDescriptors.Clear();
        GridViewHierarchyRowInfo hierarchyRow = (GridViewHierarchyRowInfo)((GridViewDetailsRowInfo)detailCell.RowInfo).Owner;
        hierarchyRow.IsExpanded = ! hierarchyRow.IsExpanded;
        hierarchyRow.IsExpanded = ! hierarchyRow.IsExpanded;
        hierarchyRow.ChildRows.Last().EnsureVisible();
    }
}
Completed
Last Updated: 05 Nov 2014 13:43 by ADMIN
ADMIN
Created by: Dess | Tech Support Engineer, Principal
Comments: 0
Category: GridView
Type: Bug Report
0
Workaround:

private void radGridView1_CellEditorInitialized(object sender, Telerik.WinControls.UI.GridViewCellEventArgs e)
{
    GridBrowseEditor browseEditor = e.ActiveEditor as GridBrowseEditor;
    if (browseEditor!=null)
    {
        browseEditor.EditorElement.MinSize = new Size(0,18);
        GridBrowseEditorElement el = browseEditor.EditorElement as GridBrowseEditorElement;
        el.TextBoxItem.TextBoxControl.MinimumSize  = new Size(0, 13);
    }
}
Completed
Last Updated: 20 Feb 2015 13:50 by ADMIN
To reproduce use the following snippets in the CellFormatting event of the exporter:
 ThemableColor red = new ThemableColor(System.Windows.Media.Colors.Red);
 CellBorders redBorders = new CellBorders(new CellBorder(CellBorderStyle.Medium, red));            

 e.CellStyleInfo.Borders = redBorders;

or 

ThemableColor red = new ThemableColor(System.Windows.Media.Colors.Red);
CellBorders fourBorders = new CellBorders();

fourBorders.Top = new CellBorder(CellBorderStyle.Thin, red);
fourBorders.Bottom = new CellBorder(CellBorderStyle.Thin, red);
fourBorders.Right = new CellBorder(CellBorderStyle.Thin, red);
fourBorders.Left = new CellBorder(CellBorderStyle.Thin, red);

e.CellStyleInfo.Borders = fourBorders;
Completed
Last Updated: 28 Nov 2014 08:45 by ADMIN
To reproduce:

Download the attached project, run it and try to filter the bottom grid. You will see the exception

Workaround:

Use the following custom RadGridView:

public class MyGrid : RadGridView
{
    protected override RadGridViewElement CreateGridViewElement()
    {
        return new MyGridElement();
    }
}

public class MyGridElement : RadGridViewElement
{
    protected override MasterGridViewTemplate CreateTemplate()
    {
        return new MyMasterTemplate();
    }

    protected override Type ThemeEffectiveType
    {
        get
        {
            return typeof(RadGridViewElement);
        }
    }
}

public class MyMasterTemplate : MasterGridViewTemplate
{
    private MyEventDispatcher dispatcher = new MyEventDispatcher();

    public override EventDispatcher EventDispatcher
    {
        get
        {
            return this.dispatcher;
        }
    }
}

public class MyEventDispatcher : EventDispatcher
{
    public override void RaiseEvent<T>(object eventKey, object sender, T args)
    {
        GridViewCellEventArgs cellArgs = args as GridViewCellEventArgs;
        if (cellArgs != null && cellArgs.Column == null && cellArgs.Row == null)
        {
            typeof(GridViewCellEventArgsBase)
                .GetField("column", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic)
                .SetValue(cellArgs, new GridViewTextBoxColumn());

            typeof(GridViewCellEventArgsBase)
                .GetField("row", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic)
                .SetValue(cellArgs, new GridViewDataRowInfo(null));
        }

        base.RaiseEvent<T>(eventKey, sender, args);
    }
}
Completed
Last Updated: 28 Nov 2014 06:27 by ADMIN
Workaround:

RadDragDropService dragDropService;
int scrollValue = 0;

public Form1()
{
    InitializeComponent();

    dragDropService = this.leftGrid.GridViewElement.GetService<RadDragDropService>();
    dragDropService.Started += dragDropService_Started;
    leftGrid.TableElement.VScrollBar.ValueChanged += VScrollBar_ValueChanged;
}

private void dragDropService_Started(object sender, EventArgs e)
{
    scrollValue = this.leftGrid.TableElement.VScrollBar.Value;
}

private void VScrollBar_ValueChanged(object sender, EventArgs e)
{
    if (dragDropService != null && dragDropService.State == RadServiceState.Working)
    {
        this.leftGrid.TableElement.VScrollBar.Value = scrollValue; 
    }
}

Resolution: 
Added AllowAutoScrollColumnsWhileDragging and AllowAutoScrollRowsWhileDragging properties of RadGridViewDragDropService: 

RadGridViewDragDropService svc = this.GridViewElement.GetService<RadGridViewDragDropService>();
svc.AllowAutoScrollColumnsWhileDragging = false;
svc.AllowAutoScrollRowsWhileDragging = false;
svc.Start(row);

Completed
Last Updated: 18 Nov 2014 11:26 by ADMIN
To reproduce:

Populate a RadGridView with the following data:

DataTable vMain = new DataTable("Details");
vMain.Columns.Add("OutServiceDateGuid", typeof(Guid));
vMain.Columns.Add("預估金額", typeof(string));
vMain.Columns.Add("織造", typeof(bool));
vMain.Columns.Add("狀態", typeof(string));
vMain.Columns.Add("委託廠商", typeof(string));       
vMain.Columns.Add("工服單", typeof(string));
vMain.Columns.Add("申請日", typeof(DateTime));
for (int i = 0; i < 40; i++)
{
    vMain.Rows.Add("50ED1E91-868C-42AC-9CA9-00A56F78C3" + i.ToString("0#") ,i.ToString(), true,"", "中心", "103LMH4"+i.ToString(), "2014-10-24 13:04:16.367"); 
}

radGridView1.DataSource = vMain;
radGridView1.Columns["OutServiceDateGuid"].IsVisible = false;    
radGridView1.Columns["申請日"].FormatString = "{0:yyyy/MM/dd}";
radGridView1.Columns["預估金額"].FormatString = "{0:C}";
radGridView1.Columns["狀態"].MaxWidth = 70;
//  this.radGridView1.AutoSizeColumnsMode = GridViewAutoSizeColumnsMode.Fill;
//this.radGridView1.BestFitColumns(BestFitColumnMode.AllCells);
//  this.radGridView1.MasterTemplate.AutoSizeColumnsMode = GridViewAutoSizeColumnsMode.Fill;
DataTable vWoven = new DataTable("vWoven");
vWoven.Columns.Add("OutServiceDateGuid", typeof(Guid));
vWoven.Columns.Add("NameOrColor", typeof(string));
vWoven.Columns.Add("Qty", typeof(string));
vWoven.Columns.Add("QtyUnitName", typeof(string));
vWoven.Columns.Add("Weight", typeof(string));
vWoven.Columns.Add("SumPrice", typeof(string));
for (int i = 0; i < 40; i++)
{
    vWoven.Rows.Add("50ED1E91-868C-42AC-9CA9-00A56F78C3" + (i + 1).ToString("0#"), " vWoven中心" + i.ToString(), i, i, i);
}

GridViewTemplate template1 = new GridViewTemplate();
template1.Caption = "織造";
template1.DataSource = vWoven;
template1.Columns["OutServiceDateGuid"].IsVisible = false;
template1.Columns["NameOrColor"].HeaderText = "成品名與規格";
template1.Columns["Qty"].HeaderText = "數量";
template1.Columns["QtyUnitName"].HeaderText = "單位";
template1.Columns["Weight"].HeaderText = "重量";
template1.Columns["SumPrice"].HeaderText = "金額";
//template1.BestFitColumns(BestFitColumnMode.AllCells);
template1.AllowRowResize = false;
template1.ShowColumnHeaders = true;
template1.ShowRowHeaderColumn = true;
template1.AllowAddNewRow = false;
template1.AllowDeleteRow = false;
template1.AllowDragToGroup = false;
this.radGridView1.Templates.Add(template1);

GridViewRelation relation1 = new GridViewRelation(this.radGridView1.MasterTemplate);
relation1.ChildTemplate = template1;
relation1.ParentColumnNames.Add("OutServiceDateGuid");
relation1.ChildColumnNames.Add("OutServiceDateGuid");
this.radGridView1.Relations.Add(relation1);

DataTable vDye = new DataTable("vDye");
vDye.Columns.Add("OutServiceDateGuid", typeof(Guid));
vDye.Columns.Add("NameOrColor", typeof(string));
vDye.Columns.Add("ColorNo", typeof(string));       
vDye.Columns.Add("Qty", typeof(string));
vDye.Columns.Add("QtyUnitName", typeof(string));
vDye.Columns.Add("Weight", typeof(string));
vDye.Columns.Add("SumPrice", typeof(string));
for (int i = 0; i < 20; i++)
{
    vDye.Rows.Add("50ED1E91-868C-42AC-9CA9-00A56F78C3" + (i + 1).ToString("0#"), " vDye中心" + i.ToString(),"", i, i, i);
}

GridViewTemplate template2 = new GridViewTemplate();
template2.Caption = "染整";
template2.DataSource = vDye;
template2.Columns["OutServiceDateGuid"].IsVisible = false;

template2.Columns["NameOrColor"].HeaderText = "顏色";
template2.Columns["ColorNo"].HeaderText = "色號";
template2.Columns["Qty"].HeaderText = "數量";
template2.Columns["QtyUnitName"].HeaderText = "單位";
template2.Columns["Weight"].HeaderText = "重量";
template2.Columns["SumPrice"].HeaderText = "金額";
//template2.BestFitColumns(BestFitColumnMode.AllCells);
template2.AllowAddNewRow = false;
template2.AllowRowResize = false;
template2.ShowColumnHeaders = true;
template2.ShowRowHeaderColumn = true;
template2.AllowDeleteRow = false;
template2.AllowDragToGroup = false;
this.radGridView1.Templates.Add(template2);

GridViewRelation relation2 = new GridViewRelation(this.radGridView1.MasterTemplate);
relation2.ChildTemplate = template2;
relation2.ParentColumnNames.Add("OutServiceDateGuid");
relation2.ChildColumnNames.Add("OutServiceDateGuid");
this.radGridView1.Relations.Add(relation2);

DataTable vAppoint = new DataTable("vAppoint");
vAppoint.Columns.Add("OutServiceDateGuid", typeof(Guid));
vAppoint.Columns.Add("NameOrColor", typeof(string));
vAppoint.Columns.Add("Qty", typeof(string));
vAppoint.Columns.Add("QtyUnitName", typeof(string));
vAppoint.Columns.Add("Weight", typeof(string));
vAppoint.Columns.Add("SumPrice", typeof(string));
for (int i = 0; i < 20; i++)
{
    vAppoint.Rows.Add("50ED1E91-868C-42AC-9CA9-00A56F78C3" + (i + 2).ToString("0#"), "vAppoint中心" + i.ToString(), i, i, i);
}
GridViewTemplate template3 = new GridViewTemplate();
template3.Caption = "委外";
template3.DataSource = vAppoint;
template3.Columns["OutServiceDateGuid"].IsVisible = false;

template3.Columns["NameOrColor"].HeaderText = "委外內容";
template3.Columns["SumPrice"].HeaderText = "金額";
//template3.BestFitColumns(BestFitColumnMode.AllCells);
template3.AllowAddNewRow = false;
template3.AllowRowResize = false;
template3.ShowColumnHeaders = true;
template3.ShowRowHeaderColumn = true;
template3.AllowDeleteRow = false;
template3.AllowDragToGroup = false;
this.radGridView1.Templates.Add(template3);

GridViewRelation relation3 = new GridViewRelation(this.radGridView1.MasterTemplate);
relation3.ChildTemplate = template3;
relation3.ParentColumnNames.Add("OutServiceDateGuid");
relation3.ChildColumnNames.Add("OutServiceDateGuid");
this.radGridView1.Relations.Add(relation3);


DataTable vMembrane = new DataTable("vMembrane");
vMembrane.Columns.Add("OutServiceDateGuid", typeof(Guid));
vMembrane.Columns.Add("NameOrColor", typeof(string));
vMembrane.Columns.Add("Qty", typeof(string));
vMembrane.Columns.Add("QtyUnitName", typeof(string));
vMembrane.Columns.Add("Weight", typeof(string));
vMembrane.Columns.Add("SumPrice", typeof(string));
//for (int i = 0; i < 40; i++)
//{
//    vMembrane.Rows.Add("50ED1E91-868C-42AC-9CA9-00A56F78C3" + (i + 3).ToString("0#"), "vMembrane中心" + i.ToString(), i, i, i);
//}

GridViewTemplate template4 = new GridViewTemplate();
template4.Caption = "膜";
template4.DataSource = vMembrane;
template4.Columns["OutServiceDateGuid"].IsVisible = false;

template4.Columns["NameOrColor"].HeaderText = "成品規格";
template4.Columns["Qty"].HeaderText = "數量";
template4.Columns["QtyUnitName"].HeaderText = "單位";
template4.Columns["SumPrice"].HeaderText = "金額";
//template4.BestFitColumns(BestFitColumnMode.AllCells);
template4.AllowAddNewRow = false;
template4.AllowRowResize = false;
template4.ShowColumnHeaders = true;
template4.ShowRowHeaderColumn = true;
template4.AllowDeleteRow = false;
template4.AllowDragToGroup = false;
this.radGridView1.Templates.Add(template4);

GridViewRelation relation4 = new GridViewRelation(this.radGridView1.MasterTemplate);
relation4.ChildTemplate = template4;
relation4.ParentColumnNames.Add("OutServiceDateGuid");
relation4.ChildColumnNames.Add("OutServiceDateGuid");
this.radGridView1.Relations.Add(relation4);

DataTable vCheck = new DataTable("vCheck");
vCheck.Columns.Add("OutServiceDateGuid", typeof(Guid));
vCheck.Columns.Add("NameOrColor", typeof(string));
vCheck.Columns.Add("Qty", typeof(string));
vCheck.Columns.Add("QtyUnitName", typeof(string));
vCheck.Columns.Add("Weight", typeof(string));
vCheck.Columns.Add("SumPrice", typeof(string));
vCheck.Columns.Add("CheckItem", typeof(string));
//for (int i = 0; i <10; i++)
//{
//    vCheck.Rows.Add("50ED1E91-868C-42AC-9CA9-00A56F78C3" + (i + 4).ToString("0#"), "中心" + i.ToString(), i, i, i);
//}

GridViewTemplate template5 = new GridViewTemplate();
template5.Caption = "檢測";
template5.DataSource = vCheck;

template5.Columns["OutServiceDateGuid"].IsVisible = false;

template5.Columns["NameOrColor"].HeaderText = "樣品名稱與規格";
template5.Columns["CheckItem"].HeaderText = "檢驗項目";
template5.Columns["CheckItem"].WrapText = true;
template5.Columns["Qty"].HeaderText = "數量";
template5.Columns["QtyUnitName"].HeaderText = "單位";
template5.Columns["SumPrice"].HeaderText = "金額";
//template5.BestFitColumns(BestFitColumnMode.AllCells);
template5.AllowAddNewRow = false;
template5.AllowRowResize = false;
template5.ShowColumnHeaders = true;
template5.ShowRowHeaderColumn = true;
template5.AllowDeleteRow = false;
template5.AllowDragToGroup = false;

this.radGridView1.Templates.Add(template5);

GridViewRelation relation5 = new GridViewRelation(this.radGridView1.MasterTemplate);
relation5.ChildTemplate = template5;
relation5.ParentColumnNames.Add("OutServiceDateGuid");
relation5.ChildColumnNames.Add("OutServiceDateGuid");
this.radGridView1.Relations.Add(relation5);

Open the application and scroll the grid a bit, you will see that any newly layouted cell will be on the most left corner.

Workaround:

Use the following code after populating the grid with data:

this.radGridView1.Columns[3].Width += 5;
this.radGridView1.Columns[3].Width -= 5;

Completed
Last Updated: 21 Nov 2014 14:22 by ADMIN
ADMIN
Created by: Dess | Tech Support Engineer, Principal
Comments: 0
Category: GridView
Type: Bug Report
0
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("Duration", typeof(TimeSpan));

for (int i = 0; i < 20; i++)
{
    dt.Rows.Add(i, "Item" + i, TimeSpan.FromMinutes(i * 10));
}

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

Try to filter via the Excel-Like filtering functionality.

Workaround: use dt.Columns.Add("Duration", typeof(string)); instead of dt.Columns.Add("Duration", typeof(TimeSpan));

Completed
Last Updated: 14 Nov 2014 15:12 by ADMIN
To reproduce:

Download the attached project and expand the first row. Collapse it and expand the second row. You will see that both rows will be expanded.

Workaround:

void radGridView1_ChildViewExpanding(object sender, ChildViewExpandingEventArgs e)
{
    Point p = this.radGridView1.PointToClient(MousePosition);
    RadElement el = this.radGridView1.ElementTree.GetElementAtPoint(p);
    if (el != null)
    {
        GridRowElement rowElement = el.FindAncestor<GridRowElement>();
        if (rowElement != null && e.ParentRow.Index != rowElement.RowInfo.Index && !e.IsExpanded)
        {
            e.Cancel = true;
        }
    }
}
Completed
Last Updated: 24 Aug 2015 13:05 by ADMIN
Note: InvalidCastException in case of converting Char to Boolean.

To reproduce: use the following code snippet:

public Form1()
{
    InitializeComponent();

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

    dt.Rows.Add("1", "Item1", "Y");
    dt.Rows.Add("2", "Item2", "N");

    this.radGridView1.DataSource = dt;
    this.radGridView1.Columns.RemoveAt(2);
    GridViewCheckBoxColumn checkBoxColumn = new GridViewCheckBoxColumn();
    checkBoxColumn.FieldName = "Active";
    checkBoxColumn.DataTypeConverter = new ToggleStateConverter();
    radGridView1.MasterTemplate.Columns.Add(checkBoxColumn);
    radGridView1.AutoSizeColumnsMode = GridViewAutoSizeColumnsMode.Fill;
    radGridView1.EnableFiltering = true;
}

public class ToggleStateConverter : TypeConverter
{
    public override bool CanConvertTo(ITypeDescriptorContext context, Type destinationType)
    {
        return destinationType == typeof(ToggleState);
    }

    public override object ConvertTo(ITypeDescriptorContext context, 
        CultureInfo culture, object value, Type destinationType)
    {
        string charValue = value + "";

        switch (charValue)
        {
            case "Y":
                return ToggleState.On;
            case "N":
                return ToggleState.Off;
            case "M":
                return ToggleState.Indeterminate;
        }

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

    public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType)
    {
        return sourceType == typeof(ToggleState);
    }

    public override object ConvertFrom(ITypeDescriptorContext context, 
        CultureInfo culture, object value)
    {
        ToggleState state = (ToggleState)value;

        switch (state)
        {
            case ToggleState.On:
                return "Y";
            case ToggleState.Off:
                return "N";
            case ToggleState.Indeterminate:
                return "M";
        }

        return base.ConvertFrom(context, culture, value);
    }
}

Try to filter by "Name" column. As a result FormatException  occurs because of inability to convert "Y"/"N" to Boolean although a custom TypeConverter is implemented to handle it.
Completed
Last Updated: 26 Nov 2014 10:00 by ADMIN
When current cell is checked (CheckBoxColumn) and the user scrolls one time  with the mouse wheel there is a blank space below the grid.
Completed
Last Updated: 14 Nov 2014 16:03 by ADMIN
To reproduce:

Download the attached project and run it. You will see the memory will increase
Completed
Last Updated: 27 Nov 2014 12:12 by ADMIN
It is related to GridViewCalculatorColumn, GridViewBrowseColumn.

Workaround: use a custom row behavior and override the ProcessAlphaNumericKey method to initialize the editor with the respective value.

http://www.telerik.com/help/winforms/gridview-rows-row-behaviors.html
Completed
Last Updated: 28 Nov 2014 06:56 by ADMIN
To reproduce:

public Form1()
{
    InitializeComponent();

    BindingSource bs1 = new BindingSource();
    BindingSource bs2 = new BindingSource();

    DataTable dt1 = new DataTable();
    dt1.Columns.Add("MortgageId", typeof(string));
    dt1.Columns.Add("MortgageNo", typeof(string));
    for (int i = 0; i < 50; i++)
    { 
        dt1.Rows.Add(i, Guid.NewGuid().ToString().Substring(0, 5));              
    }
    bs1.DataSource = dt1;

    DataTable dt2 = new DataTable();
    dt2.Columns.Add("PaymentCode", typeof(string));
    dt2.Columns.Add("Description", typeof(string));

    for (int i = 0; i < 50; i++)
    {
        dt2.Rows.Add(Guid.NewGuid().ToString().Substring(0, 5), Guid.NewGuid().ToString().Substring(0, 5));
    }
    bs2.DataSource = dt2;

    GridViewMultiComboBoxColumn col1 = new GridViewMultiComboBoxColumn("MortgageId");          
    col1.DataSource = bs1;
    col1.FieldName = "MortgageId";
    col1.DisplayMember = "MortgageId";
    col1.ValueMember = "MortgageId";
    col1.Width = 70;
    this.radGridView1.Columns.Add(col1);

    col1 = new GridViewMultiComboBoxColumn("PaymentCode");         
    col1.DataSource = bs2;
    col1.DisplayMember = "PaymentCode";
    col1.ValueMember = "PaymentCode";
    col1.FieldName = "PaymentCode";
    col1.Width = 70;
    this.radGridView1.Columns.Add(col1);

    this.radGridView1.CellEditorInitialized += radGridView1_CellEditorInitialized;
}

private void radGridView1_CellEditorInitialized(object sender, Telerik.WinControls.UI.GridViewCellEventArgs e)
{
    if (e.Column.Name == "MortgageId")
    {
        RadMultiColumnComboBoxElement editor = e.ActiveEditor as RadMultiColumnComboBoxElement;
        if (editor != null)
        {
            editor.EditorControl.FilterDescriptors.Clear();
            editor.EditorControl.Columns.Clear();
            editor.EditorControl.MasterTemplate.AutoGenerateColumns = false;
            editor.EditorControl.Columns.Add(new GridViewTextBoxColumn("MortgageId"));
            editor.EditorControl.Columns.Add(new GridViewTextBoxColumn("MortgageNo"));
            editor.DropDownWidth = 200;    
        }
        return;
    }
    if (e.Column.Name == "PaymentCode")
    {
        RadMultiColumnComboBoxElement editor = e.ActiveEditor as RadMultiColumnComboBoxElement;
        if (editor != null)
        {
            editor.EditorControl.FilterDescriptors.Clear();
            editor.EditorControl.Columns.Clear();
            editor.EditorControl.MasterTemplate.AutoGenerateColumns = false;
            editor.EditorControl.Columns.Add(new GridViewTextBoxColumn("PaymentCode"));
            editor.EditorControl.Columns.Add(new GridViewTextBoxColumn("Description"));
            editor.DropDownWidth = 200;    
        }
        return;
    }
}


Workaround: do not set the RadMultiColumnComboBoxElement.EditorControl.MasterTemplate.AutoGenerateColumns property to false in the CellEditorInitialized event .
Completed
Last Updated: 26 Jan 2015 14:01 by ADMIN
To reproduce: 
- Bind the grid to a self reference data, it should contain nullable bool value as well.
- Add checkbox column:
GridViewCheckBoxColumn chkBoxColumn = new GridViewCheckBoxColumn();
chkBoxColumn.EnableHeaderCheckBox = true;
chkBoxColumn.ThreeState = true;
chkBoxColumn.EditMode = EditMode.OnValueChange;

- Start and uncheck and check one of the cells (in a data row)

Workaround:
public class MyGridCheckBoxHeaderCellElement : GridCheckBoxHeaderCellElement
{
    public MyGridCheckBoxHeaderCellElement(GridViewColumn column, GridRowElement row) : base(column,row)
    {
    }

    protected override bool SetCheckBoxState()
    {
        bool hasNullValue = false;
        foreach (GridViewRowInfo row in this.ViewInfo.Rows)
        {
            object cellValue = row.Cells[this.ColumnIndex].Value;
            if (cellValue == null)
            {
                hasNullValue = true;
            }
        }

        if (!hasNullValue)
        {
            return base.SetCheckBoxState();
        }

        SetCheckBoxState(ToggleState.Indeterminate);
        return false;
    }
}
Declined
Last Updated: 08 Sep 2015 11:31 by ADMIN
Synchronization between the filter descriptors collection and the excel like filtering.
Completed
Last Updated: 23 Dec 2014 07:54 by ADMIN
Currently if a user hits the decimal separator key the grid opens a cell for edit and selects its content. If the user does not notice this he may enter 1 instead of 0.1
Completed
Last Updated: 26 Jan 2015 14:37 by ADMIN
To reproduce:
- Add GridViewCheckBoxColumn and set the EnableHeaderCheckBox property to true.
- Mark all check boxes and change the data source of the grid (use one where not all values are set to true).

Workaround:
Add new column when the data source is changed.
Completed
Last Updated: 17 Feb 2015 17:57 by ADMIN
Workaround: 

        RadImageShape hint;

        protected override void OnLoad(EventArgs e)
        {
            base.OnLoad(e);

            InitializeComponent();

            hint = radGridView1.TableElement.RowDragHint;
            new Windows7Theme();
            radGridView1.ThemeName = "Windows7";

            radGridView1.TableElement.RowDragHint = hint;
          }
Declined
Last Updated: 21 Oct 2015 10:39 by ADMIN
To reproduce:
- Bind the grid to a data source and set its RightToLeftProperty to true.

Note: use Visual Studio 2008 under Windows XP with .NET 2.0

Workaround:
Private Sub RadGridView1_ViewCellFormatting(ByVal sender As System.Object, ByVal e As Telerik.WinControls.UI.CellFormattingEventArgs)
 
    If RadGridView1.RightToLeft = Windows.Forms.RightToLeft.Yes Then
        e.CellElement.TextAlignment = ContentAlignment.MiddleLeft
    End If
End Sub