Completed
Last Updated: 19 Aug 2016 09:51 by ADMIN
To reproduce:
Create a ListView or GridView cell element. For example:
public class FilterGroupByCell : DetailListViewDataCellElement
    {
        private RadMultiColumnComboBoxElement multiColumnComboBox = new RadMultiColumnComboBoxElement();
        public FilterGroupByCell(DetailListViewVisualItem owner, ListViewDetailColumn column) :
            base(owner, column) { }

        protected override void CreateChildElements()
        {
            base.CreateChildElements();

            this.multiColumnComboBox.AutoSizeDropDownToBestFit = true;
            multiColumnComboBox.DropDownSizingMode = SizingMode.UpDownAndRightBottom;
            multiColumnComboBox.EditorControl.MasterTemplate.AutoGenerateColumns = false;

            GridViewTextBoxColumn column = new GridViewTextBoxColumn("CustomerID");
            column.HeaderText = "Customer ID";
            multiColumnComboBox.Columns.Add(column);
            column = new GridViewTextBoxColumn("ContactName");
            column.HeaderText = "Contact Name";
            multiColumnComboBox.Columns.Add(column);
            column = new GridViewTextBoxColumn("ContactTitle");
            column.HeaderText = "Contact Title";
            multiColumnComboBox.Columns.Add(column);
            column = new GridViewTextBoxColumn("Country");
            column.HeaderText = "Country";
            multiColumnComboBox.Columns.Add(column);
            column = new GridViewTextBoxColumn("Phone");
            column.HeaderText = "Phone";
            multiColumnComboBox.Columns.Add(column);

            this.Children.Add(multiColumnComboBox);
        }

        public override void Synchronize()
        {
            base.Synchronize();
            this.Text = "";

            if (base.Row == null)
            {
                return;
            }

            this.CurrentFilter = (MFilter)base.Row.DataBoundItem;

            if (CurrentFilter.CustomListRecordId == "1")
                multiColumnComboBox.Visibility = Telerik.WinControls.ElementVisibility.Collapsed;

            DataTable table1 = new DataTable("test");
            table1.Columns.Add("CustomerID");
            table1.Columns.Add("ContactName");
            table1.Columns.Add("ContactTitle");
            table1.Columns.Add("Country");
            table1.Columns.Add("Phone");

            table1.Rows.Add(1, "Ivan Petrov", "2", "2", "2");
            table1.Rows.Add(2, "Stefan Muler", "2", "2", "2");
            table1.Rows.Add(3, "Alexandro Ricco", "2", "2", "2");

            multiColumnComboBox.DataSource = table1;
            multiColumnComboBox.DisplayMember = "ContactName";
        }

        public MFilter CurrentFilter { get; set; }
    }

Workaround:
Create a custom RadMultiColumnComboBoxElement:
public class MyRadMultiColumnComboBoxElement : RadMultiColumnComboBoxElement
{
    protected override void OnParentChanged(Telerik.WinControls.RadElement previousParent)
    {
        if (this.IsPopupOpen)
        {
            this.ClosePopup(RadPopupCloseReason.CloseCalled);
        }

        if (this.Parent != null && this.Parent.ElementTree != null && this.Parent.ElementTree.Control is RadGridView)
        {
            base.OnParentChanged(previousParent);
        }
    }

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

In order to be able to set a DataSource you need to create a new BindingContext prior setting setting the DataSource:

DataTable table1 = new DataTable("test");
table1.Columns.Add("CustomerID");
table1.Columns.Add("ContactName");
table1.Columns.Add("ContactTitle");
table1.Columns.Add("Country");
table1.Columns.Add("Phone");

table1.Rows.Add(1, "Ivan Petrov", "2", "2", "2");
table1.Rows.Add(2, "Stefan Muler", "2", "2", "2");
table1.Rows.Add(3, "Alexandro Ricco", "2", "2", "2");

multiColumnComboBox.EditorControl.BindingContext = new System.Windows.Forms.BindingContext();
multiColumnComboBox.DataSource = table1;
multiColumnComboBox.DisplayMember = "ContactName";

Completed
Last Updated: 29 Jul 2016 13:58 by ADMIN
Currently there is not support for simple binding for this property.
Completed
Last Updated: 19 Jul 2016 14:16 by ADMIN
To reproduce:

public Form1()
{
    InitializeComponent();

    DataTable dt = new DataTable();
    dt.Columns.Add("Id", typeof(int));
    dt.Columns.Add("Name", typeof(string));
    for (int i = 0; i < 20; i++)
    {
        dt.Rows.Add(i, "Item" + i);
    }
    this.radMultiColumnComboBox1.DataSource = dt;
    this.radMultiColumnComboBox1.DisplayMember = "Name";
    this.radMultiColumnComboBox1.ValueMember = "Id";
    this.radMultiColumnComboBox1.SelectedValueChanged += radMultiColumnComboBox1_SelectedValueChanged; 
}

private void radMultiColumnComboBox1_SelectedValueChanged(object sender, EventArgs e)
{ 
    if (this.radMultiColumnComboBox1.SelectedIndex > -1)
    {
        MessageBox.Show("Test");
    }
}

NOTE: If you use a RadMessageBox, after showing the message the first time, the popup can't be closed because InvalidOperationException is thrown.

Workaround: show the message box in the RadMultiColumnComboBox.DropDownClosed event.
Completed
Last Updated: 08 Jan 2016 06:29 by ADMIN
Steps to reproduce:
1. Select the radMultiColumnsComboBox1 at Design time
2. Press F4 for showing Properties
3. Open Columns editor (GridViewDataColumn Collection Editor)
4. Try to add a column
Error Message: Cannot create an instance of the abstract class or interface 'Telerik.WinControls.UI.GridViewDataColumn' because it is an abstract class.
Completed
Last Updated: 12 Dec 2015 13:31 by ADMIN
To reproduce:
- Set the AutoFileter property to true.
- Add filter descriptor;
- Start the application and type something in the control - you just need to filter the values so more than one entry is available in the drop down.
- Press Tab or click on other control.
- You will notice that the selected value is set, but the text is not synchronized.

Workaround:
void radMultiColumnComboBox1_Validated(object sender, EventArgs e)
{
    if (radMultiColumnComboBox1.SelectedValue != null)
    {
        string text = radMultiColumnComboBox1.EditorControl.CurrentRow.Cells[radMultiColumnComboBox1.DisplayMember].Value.ToString();
        if (text != radMultiColumnComboBox1.Text)
        {
            radMultiColumnComboBox1.Text = text;
        }
    }
}
Completed
Last Updated: 02 Dec 2015 07:59 by ADMIN
When copy the RadMultiColumnComboBox control it pastes the underling grid as a separate control.

Workaround: Place the RadMultiColumnComboBox on a UserControl, and introduce the desired settings there. Then reuse the user control in your forms.
Completed
Last Updated: 16 Nov 2015 13:39 by ADMIN
To reproduce:
- Bind the control to a binding list.
- Add and then remove items at runtime.


Workaround:
radMultiColumnComboBox1.EditorControl.BeginUpdate();

list.RemoveAt(0);

radMultiColumnComboBox1.EditorControl.EndUpdate();
Completed
Last Updated: 16 Oct 2015 12:04 by ADMIN
To reproduce:
- Ty some text so the items in the drop down are filtered.
- Directly press enter (this should select the first item in the drop down)
- The selected value is updated however the text is not.

Workaround:
Private Sub cbo_SelectedValueChanged(sender As Object, e As EventArgs) Handles RadMultiColumnComboBox1.SelectedValueChanged, RadMultiColumnComboBox2.SelectedValueChanged, RadMultiColumnComboBox3.SelectedValueChanged
    Dim cbo As RadMultiColumnComboBox = sender

    If bLoading = False AndAlso cbo.Text <> CType(cbo.SelectedItem, Telerik.WinControls.UI.GridViewDataRowInfo).Cells(cbo.DisplayMember).Value Then
        cbo.Text = CType(cbo.SelectedItem, Telerik.WinControls.UI.GridViewDataRowInfo).Cells(cbo.DisplayMember).Value
    End If
End Sub
Completed
Last Updated: 17 Aug 2015 12:49 by ADMIN
To reproduce:
- Add columns to  the control manually.
- Bind the control. Make sure that the FieldNames are different from the column names.
- Start the application and select a value. Retrieve he value upon button click.

Workaround:
Use equal names.
Completed
Last Updated: 24 Jun 2015 12:35 by ADMIN
1. Create a new project with RadGridView and bind it.
2. Add GridViewMultiComboBoxColumn.
3. Set its DataSource to a large data set.
4. Run the project and try to show the drop down.
Completed
Last Updated: 08 Jun 2015 08:44 by ADMIN
To reproduce:
- Add bound MCCB to a form.
- Open the form at design time.
- Add a control to the form and resize it.
- Start the application and and then close the form.
- You will get the following error "The designer loader did not provide a root component but has not indicated why".
  
Completed
Last Updated: 28 May 2015 13:24 by ADMIN
Drop-down opening of RadMultiColumnComboBox delays, when the AutoSizeDropDownToBestFit property is enabled and the control is bound to more than 2000 records.

Work around:

this.radMultiColumnComboBox1.ValueMember = "ID";
this.radMultiColumnComboBox1.DisplayMember = "Name";
this.radMultiColumnComboBox1.DataSource = table;
this.radMultiColumnComboBox1.AutoSizeDropDownToBestFit = false;
this.radMultiColumnComboBox1.BestFitColumns(true, false);
Completed
Last Updated: 28 May 2015 13:07 by ADMIN
Workaround:
Cancel CurrentRowChanging event if Text is empty:
        this.radMultiColumnComboBox1.EditorControl.CurrentRowChanging += EditorControl_CurrentRowChanging;
        void EditorControl_CurrentRowChanging(object sender, Telerik.WinControls.UI.CurrentRowChangingEventArgs e)
        {
            e.Cancel = string.IsNullOrEmpty(this.radMultiColumnComboBox1.Text) && this.radMultiColumnComboBox1.MultiColumnComboBoxElement.ArrowButton.IsPressed;
        }
Completed
Last Updated: 26 Mar 2015 08:00 by ADMIN
To reproduice:
1. Add mccb and bind it:
            Random random = new Random();
            DataTable dataTable = new DataTable();
            dataTable.Columns.Add("ID", typeof(int));
            dataTable.Columns.Add("Name", typeof(string));
            dataTable.Columns.Add("Bool", typeof(bool));
            dataTable.Columns.Add("DateColumn", typeof(DateTime));
            for (int i = 0; i < 20; i++)
            {
                dataTable.Rows.Add(i, "Row " + i, random.Next(10) > 5 ? true : false, DateTime.Now.AddDays(i));
            }
            this.radMultiColumnComboBox1.DataSource = dataTable;
            this.radMultiColumnComboBox1.DisplayMember = "Name";
            this.radMultiColumnComboBox1.ValueMember = "Name";

2. Add filter and subscribe to the event:
            radMultiColumnComboBox1.AutoFilter = true;

            FilterDescriptor filter = new FilterDescriptor();
            filter.PropertyName = "Name";
            filter.Operator = FilterOperator.Contains;

            this.radMultiColumnComboBox1.EditorControl.MasterTemplate.FilterDescriptors.Add(filter);
            radMultiColumnComboBox1.SelectedIndexChanged += radMultiColumnComboBox1_SelectedIndexChanged;

        void radMultiColumnComboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            Console.WriteLine(string.Format("Row changed, current Name = {0}", radMultiColumnComboBox1.EditorControl.Rows[radMultiColumnComboBox1.SelectedIndex].Cells["Name"].Value));
        }

3. Start the app the selected row is "Row 0". Type in "2", the popup will open showing rows "Row 2" and "Row 12". At this point, pressing Esc or moving the focus away from the control selected Row 2, while it shouldn't.

Completed
Last Updated: 29 Jan 2015 12:46 by ADMIN
To reproduce: 

1. Add a RadMultiColumnComboBox and set up filtering.
2. Start typing in order to filter all the rows.
3. Click somewhere. As a result the RadMultiColumnComboBox will loose focus.

If you try to get the SelectedIndex or SelectedValue you will notice that the first row in the popup grid is current. It is expected to have no selected row as the entered text does not match any row.

Workaround:

 public class CustomRadMultiColumnComboBox : RadMultiColumnComboBox
        {
            protected override void OnLostFocus(EventArgs e)
            {
                int currentIndex = this.SelectedIndex;
                base.OnLostFocus(e);
                this.SelectedIndex = currentIndex;
            }

            public override string ThemeClassName  
            { 
                get 
                { 
                    return typeof(RadMultiColumnComboBox).FullName;  
                }
            }
        }
Completed
Last Updated: 10 Dec 2014 11:50 by ADMIN
To reproduce:

Add a RadMultiColumnComboBox with one row. Open and close the dropdown, you will see that the scrollbars will show and hide with every openning

Workaround:

Use the following class:

public class MCCB : RadMultiColumnComboBox
{
    protected override RadMultiColumnComboBoxElement CreateMultiColumnComboBoxElement()
    {
        return new MCCBElement();
    }
}

public class MCCBElement : RadMultiColumnComboBoxElement
{
    protected override Size GetPopupSize(RadPopupControlBase popup, bool measure)
    {
        Size baseSize = base.GetPopupSize(popup, measure);

        RadScrollBarElement hScrollBarElement = this.EditorControl.TableElement.HScrollBar;
        baseSize.Height += (int)hScrollBarElement.ControlBoundingRectangle.Size.Height;

        return baseSize;
    }

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

Completed
Last Updated: 20 Nov 2014 15:21 by ADMIN
To reproduce:

Add a RadMultiColumnComboBox fill it with data and set the following settings:

comboBoxColumnElement.EditorControl.AutoSizeRows = true;
comboBoxColumnElement.EditorControl.AutoSizeColumnsMode = GridViewAutoSizeColumnsMode.Fill;
comboBoxColumnElement.EditorControl.MasterTemplate.AutoGenerateColumns = false;
comboBoxColumnElement.EditorControl.ShowRowHeaderColumn = false;
comboBoxColumnElement.EditorControl.ShowFilteringRow = false;

comboBoxColumnElement.AutoSize = true;
comboBoxColumnElement.AutoFilter = true;
comboBoxColumnElement.AutoSizeMode = Telerik.WinControls.RadAutoSizeMode.FitToAvailableSize;
comboBoxColumnElement.AutoSizeDropDownToBestFit = true;
comboBoxColumnElement.DropDownMinSize = new Size(420, 150);
comboBoxColumnElement.DropDownSizingMode = SizingMode.UpDownAndRightBottom;



When you open the dropdown you will notice that one time the scrollbar will be on the bottom and the next time it will be on the top and so on.

Workaround:

comboBoxColumnElement.PopupOpened += Popup_Opened;....

Timer timer = new Timer();

private void Popup_Opened(object sender, EventArgs e)

{
timer.Tick += Tick;
timer.Interval = 20;
timer.Start();

}

private void Tick(object sender, EventArgs e)
{
comboBoxColumnElement.EditorControl.TableElement.ScrollToRow(comboBoxColumnElement.EditorControl.SelectedRows(0));

        timer.Stop();

}


Completed
Last Updated: 30 Oct 2014 14:14 by ADMIN
ADMIN
Created by: Julian Benkov
Comments: 0
Category: MultiColumnCombo
Type: Bug Report
0
I tried upgrading to Q1 2013 and am having a problem with speed. In the past some of these big multi-combos were slow but we were able to speed it up by not using size to fit. Now the speed is horrible, especially for the large table. It looks like nothing is happening for quite a while when I click on the drop down button.

WORKAROUND: 
You can call the LoadElementTree method for every combobox in the end of your Load event handler
Completed
Last Updated: 20 Oct 2014 14:36 by ADMIN
When the AutoFilter and AutoSuggest are turned the freely typed text is not preserved and the first row of grid is selected. 
Perhaps there should be a property that controls this.
Completed
Last Updated: 20 Oct 2014 13:58 by ADMIN
To reproduce: use the following code:
private void Form1_Load(object sender, EventArgs e)
{
    this.productsTableAdapter.Fill(this.nwindDataSet.Products);

    this.radMultiColumnComboBox1.DataSource = this.productsBindingSource;
    this.radMultiColumnComboBox1.DisplayMember = "ProductName";
    this.radMultiColumnComboBox1.MultiColumnComboBoxElement.DropDownAnimationEnabled = false;
}

Follow the steps:
1.Click the arrow button.
2.Scroll to the bottom via the Mouse Wheel
As a result the last 3 rows are missing.
3.Scroll to the top via the Mouse Wheel.
4.Scroll to the bottom via the Mouse Wheel
As a result the 3 missing rows are now visible.

Workaround:
this.radMultiColumnComboBox1.MultiColumnComboBoxElement.PopupOpened+=MultiColumnComboBoxElement_PopupOpened;

private void MultiColumnComboBoxElement_PopupOpened(object sender, EventArgs e)
{
    this.radMultiColumnComboBox1.MultiColumnComboBoxElement.EditorControl.TableElement.VScrollBar.Value =
        this.radMultiColumnComboBox1.MultiColumnComboBoxElement.EditorControl.TableElement.VScrollBar.Maximum;
}