Approved
Last Updated: 07 Mar 2019 12:39 by ADMIN

1. Run the project and press "a" in the editable part of RadMultiColumnCombobox.

2. Press Tab. As a result you will notice that no selection will be available. If you run the project with a version prior to R2 2018 (version 2018.2.515), the selection will be kept.

Approved
Last Updated: 28 Feb 2019 14:41 by Ioannis

Populate RadMultiColumnComboBox with data and enable the auto filter functionality. Apply a CompositeFilterDescriptor with two text columns. Try to filter entering several letters and press Tab. You will notice that the SelectedIndexChanged event is not fired in this case. However, if only one FilterDescriptor is added, not a CompositeFilterDescriptor, the selection will be properly updated. 

Please refer to the attached sample project and gif file which illustrates the behavior. 

Completed
Last Updated: 15 Feb 2019 16:41 by ADMIN
ADMIN
Created by: Dess | Tech Support Engineer, Sr.
Comments: 3
Category: MultiColumnCombo
Type: Bug Report
5
To reproduce:

Repository commonRepository = new Repository();

public Form1()
{
    InitializeComponent();

    InitializeDropDown();

    this.radMultiColumnComboBox1.DropDownMinSize = new Size(1100, 400);
    this.radMultiColumnComboBox1.EditorControl.ViewCellFormatting += EditorControl_ViewCellFormatting;
}

private void EditorControl_ViewCellFormatting(object sender, CellFormattingEventArgs e)
{
    if (e.Row is GridViewDataRowInfo && e.CellElement is GridRowHeaderCellElement)
    {
        e.CellElement.Text = e.RowIndex.ToString();
    }
}

public class Instrument
{ 
    public string Isin { get; set; }

    public string Description { get; set; }
    
    public string AlphaCode { get; set; }
    
    public string MicMarketplaceCode { get; set; }
    
    public string WorpMarketPlaceDescription { get; set; }
     
    public string InstrumentType { get; set; }
   
    public string DerivateIsin { get; set; }
    
    public int Order { get; set; }
}

public class Repository
{
    public BindingList<Instrument> GetInstruments()
    {
        Random rand = new Random();
        BindingList<Instrument> list = new BindingList<Instrument>();
        for (int i = 0; i < 80000; i++)
        {
            list.Add(new Instrument()
            {
                Isin = Guid.NewGuid().ToString(),
                Description = "Description" + i,
                AlphaCode = "Code" + i,
                MicMarketplaceCode = "MicCode" + i,
                WorpMarketPlaceDescription = "MPdescription" + i,
                InstrumentType = "Type" + i % 3,
                DerivateIsin = Guid.NewGuid().ToString(),
                Order = rand.Next(1, 100)
            });
        }
        return list;
    }
}

public void InitializeDropDown()
{
    var ui = TaskScheduler.FromCurrentSynchronizationContext();

    Task.Factory.StartNew(() =>
    {
        var result = commonRepository.GetInstruments();
        return result;
    }).ContinueWith(res =>
    {
        if (res.IsCompleted)
        {
            this.radMultiColumnComboBox1.DisplayMember = "Description";
            this.radMultiColumnComboBox1.ValueMember = "Isin";
            this.radMultiColumnComboBox1.AutoFilter = true;

            this.radMultiColumnComboBox1.DataSource = res.Result;

            CompositeFilterDescriptor compositeFilter = new CompositeFilterDescriptor();

            FilterDescriptor code = new FilterDescriptor("Isin", FilterOperator.Contains, "");
            FilterDescriptor description = new FilterDescriptor("Description", FilterOperator.Contains, "");
            FilterDescriptor alphaCode = new FilterDescriptor("AlphaCode", FilterOperator.Contains, "");
            FilterDescriptor micMarketplaceCode = new FilterDescriptor("MicMarketplaceCode", FilterOperator.Contains, "");
            FilterDescriptor worpMarketPlaceDescription = new FilterDescriptor("WorpMarketPlaceDescription", FilterOperator.Contains, "");
            FilterDescriptor instrumentType = new FilterDescriptor("InstrumentType", FilterOperator.Contains, "");
            FilterDescriptor derivateIsin = new FilterDescriptor("DerivateIsin", FilterOperator.Contains, "");

            compositeFilter.FilterDescriptors.Add(code);
            compositeFilter.FilterDescriptors.Add(description);
            compositeFilter.FilterDescriptors.Add(alphaCode);
            compositeFilter.FilterDescriptors.Add(micMarketplaceCode);
            compositeFilter.FilterDescriptors.Add(worpMarketPlaceDescription);
            compositeFilter.FilterDescriptors.Add(instrumentType);
            compositeFilter.FilterDescriptors.Add(derivateIsin);

            compositeFilter.LogicalOperator = FilterLogicalOperator.Or;

            this.radMultiColumnComboBox1.EditorControl.FilterDescriptors.Add(compositeFilter);

            this.radMultiColumnComboBox1.EditorControl.BestFitColumns();

            for (int i = 0; i < this.radMultiColumnComboBox1.EditorControl.Columns.Count; i++)
            {
                var column = this.radMultiColumnComboBox1.EditorControl.Columns[i];

                switch (column.Name)
                {
                    case "Isin":
                        column.HeaderText = "Header Isin";
                        column.Width = 120;
                        break;
                    case "Description":
                        column.HeaderText = "Header Description";
                        break;
                    case "AlphaCode":
                        column.HeaderText = "Header AlphaCode";
                        break;
                    case "MicMarketplaceCode":
                        column.HeaderText = "Header MicMarketplaceCode";
                        break;
                    case "WorpMarketPlaceDescription":
                        column.HeaderText = "Header WorpMarketPlaceDescription";
                        break;
                    case "InstrumentType":
                        column.HeaderText = "Header InstrumentType";
                        break;
                    case "DerivateIsin":
                        column.HeaderText = "Header DerivateIsin";
                        break;
                    case "Order":
                        column.IsVisible = false;
                        break;
                }
            }

            this.radMultiColumnComboBox1.SelectedItem = null;

            this.radMultiColumnComboBox1.Text = "Instrument";
            this.radMultiColumnComboBox1.ForeColor = Color.Gray;

            this.radMultiColumnComboBox1.MultiColumnComboBoxElement.DropDownWidth = 550;
        }
        else
        {
            RadMessageBox.Show(res.Exception.Message);
        }
    }, ui);
}

Workaround: use custom filtering instead of CompositeFilterDescriptor:

FilterDescriptor filter = new FilterDescriptor();
filter.PropertyName = this.radMultiColumnComboBox1.DisplayMember;
filter.Operator = FilterOperator.Contains;
this.radMultiColumnComboBox1.EditorControl.MasterTemplate.FilterDescriptors.Add(filter);
this.radMultiColumnComboBox1.EditorControl.EnableCustomFiltering = true;
this.radMultiColumnComboBox1.EditorControl.CustomFiltering += EditorControl_CustomFiltering;

 private void EditorControl_CustomFiltering(object sender, GridViewCustomFilteringEventArgs e)
 {
     string searchText = this.radMultiColumnComboBox1.MultiColumnComboBoxElement.EditorElement.Text;
     if (searchText != string.Empty)
     {
         Instrument instrument = e.Row.DataBoundItem as Instrument;

         e.Handled = true;
         e.Visible = instrument.Isin.Contains(searchText) || instrument.Description.Contains(searchText) || instrument.AlphaCode.Contains(searchText) ||
                     instrument.MicMarketplaceCode.Contains(searchText) || instrument.WorpMarketPlaceDescription.Contains(searchText) ||
                     instrument.InstrumentType.Contains(searchText) || instrument.DerivateIsin.Contains(searchText);
     }
 }
Approved
Last Updated: 22 Jan 2019 06:20 by ADMIN

Hello,

I'm facing a problem with the MulticolumnCombobox that results in an SelectedValueChanged-Event when the list is dropped down the first time after data source was set. Please use the attached project for reproducing the problem using the following steps:

  1. Start Application on Windows 10 Chinese (Note: The described behaviour will not occur for other cultures (i.e. German will not fire the event at that time))
  2. Click the Button having the Text "RadButton1", which will set the DataSource and fire the event "SelectedValueChanged" (MessageBox will pop up) which is okay at this point.
  3. Now perform the drop down for the Combobox. Using Windows 10 Chinese will fire "SelectedValueChanged" and Windows 10 German will not fire "SelectedValueChanged".

==> As the MulticolumnCombobox performs different based on the culture, this seems to be a bug.

 

If you need further information, please do not hestitate to ask.

Completed
Last Updated: 14 Jan 2019 11:59 by ADMIN
To reproduce: 
- When the filter is set to contains the item is different than the item is selected from the drop-down and the text is taken from the append functionality.

Workaround
Either change the filter to StarrtsWith or remove the suggest functionality. 
New
Last Updated: 10 Dec 2018 12:19 by ADMIN
Under Review
Last Updated: 06 Dec 2018 13:55 by ADMIN
To reproduce: Add a RadMultiColumnCombobox to the form, set the DropDownStyle property to DropDownList and clear the text. You will notice that the height of the control is not bigger than 5 px.

Workaround: set MinimumSize 

Me.RadMultiColumnComboBox1.MinimumSize = New Size(200, 23)

Approved
Last Updated: 19 Oct 2018 09:58 by ADMIN
Workaround: 

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

    LightVisualElement lve = this.radMultiColumnComboBox1.MultiColumnComboBoxElement.TextboxContentElement;
    RadArrowButtonElement arrow = this.radMultiColumnComboBox1.MultiColumnComboBoxElement.ArrowButton;
    lve.MaxSize = new Size(lve.Size.Width - arrow.Size.Width - (int)arrow.Border.Width, 0);
}
Completed
Last Updated: 01 Oct 2018 12:44 by Jesse Dyck
ADD. RadMultiColumnComboBox - add ability to display focus cues when DropDownStyle = DropDownList
Approved
Last Updated: 11 Sep 2018 11:39 by ADMIN
Use attached to reproduce.

- There is still space at the bottom of the grid. 

Workaround:

class MCCM : RadMultiColumnComboBox
{
    protected override RadMultiColumnComboBoxElement CreateMultiColumnComboBoxElement()
    {
        return new MCCBElement();
    }
}
class MCCBElement : RadMultiColumnComboBoxElement
{
    protected override Type ThemeEffectiveType
    {
        get { return typeof(RadMultiColumnComboBoxElement);}
    }
    protected override Size GetPopupSize(RadPopupControlBase popup, bool measure)
    {
        var result = base.GetPopupSize(popup, measure);

        GridTableElement tableElement = this.EditorControl.TableElement;
        int height = 0;
        GridTraverser traverser = new GridTraverser(this.EditorControl.MasterView);
        RowElementProvider rowElementProvider = (RowElementProvider)tableElement.RowScroller.ElementProvider;
        while (traverser.MoveNext())
        {
            height += (int)rowElementProvider.GetElementSize(traverser.Current).Height;
            height += this.EditorControl.TableElement.RowSpacing;
            
        }
        return new Size(result.Width, height +1);
    }
}
Approved
Last Updated: 04 Sep 2018 09:30 by ADMIN
1. Create a new project and add RadMultiColumnComboBox
2. Bind it and setup filtering
3. Attach to SelectedValueChanged and SelectedIndexChanged events
4. Run the project
5. Apply some filtering and you will see that these events will not fire, regardless that the current row has changed.

Work around it by using the EditorControl.CurrentRowChanged event instead of SelectedValueChanged/SelectedIndexChanged events. 
Completed
Last Updated: 22 Aug 2018 08:20 by Dimitar
Use attached to reproduce!

Workaround 
The column name must match the field name.
Completed
Last Updated: 10 Aug 2018 09:08 by Dimitar
To reproduce: 
- Set the DropDownStyle to DropDownList
Completed
Last Updated: 20 Jul 2018 08:09 by Dimitar
To reproduce: run the attached project and refer to the attached gif file.

Workaround:

 this.radMultiColumnComboBox1.MultiColumnComboBoxElement.TextBoxElement.TextBoxItem.TextBoxControl.MouseDown += TextBoxControl_MouseDown;

        private void TextBoxControl_MouseDown(object sender, MouseEventArgs e)
        {
            this.radMultiColumnComboBox1.MultiColumnComboBoxElement.TextBoxElement.TextBoxItem.TextBoxControl.SelectAll();
        }
Approved
Last Updated: 26 Jun 2018 09:55 by ADMIN
Use attached to reproduce:

- Press button1, open the drop-down and use the mouse wheel.

Workaround:

class MyMultiColumnComboPopupForm : MultiColumnComboPopupForm
{
    public MyMultiColumnComboPopupForm(PopupEditorBaseElement owner)
       : base(owner)
    {


    }
    public override bool OnMouseWheel(Control target, int delta)
    {
        return true;
    }
}
class MyMCCB : RadMultiColumnComboBox
{
    protected override RadMultiColumnComboBoxElement CreateMultiColumnComboBoxElement()
    {
        return new MyMCCBElement();
    }
}
class MyMCCBElement : RadMultiColumnComboBoxElement
{
    protected override Type ThemeEffectiveType
    {
        get
        {
            return typeof(RadMultiColumnComboBoxElement);
        }
    }
    protected override RadPopupControlBase CreatePopupForm()
    {
        var popupForm = new MyMultiColumnComboPopupForm(this);
        popupForm.EditorControl.Focusable = false;
        popupForm.MinimumSize = this.DropDownMaxSize;
        popupForm.MaximumSize = this.DropDownMaxSize;
        popupForm.Height = this.DropDownHeight;
        popupForm.VerticalAlignmentCorrectionMode = AlignmentCorrectionMode.SnapToOuterEdges;
        popupForm.HorizontalAlignmentCorrectionMode = AlignmentCorrectionMode.Smooth;
        popupForm.RightToLeft = this.RightToLeft ? System.Windows.Forms.RightToLeft.Yes : System.Windows.Forms.RightToLeft.Inherit;
        this.WirePopupFormEvents(popupForm);
        return popupForm;
    }
}


Declined
Last Updated: 25 Jun 2018 10:37 by ADMIN
At the moment when the control receives the focus the text gets selected. if the AllowShowFocusCues property is set to true and the DropDownStyle is set to DropDownList the focus cues should be painted similarly as in RadDropDownList
this.radMultiColumnComboBox1.AllowShowFocusCues = true;
this.radMultiColumnComboBox1.DropDownStyle = Telerik.WinControls.RadDropDownStyle.DropDownList;
Completed
Last Updated: 21 May 2018 15:02 by Dimitar
Workaround: 
1. Position the RadMultiColumnComboBox control and instead of setting the Dock property to Fill, anchor the it on all four sides.
Alternatively:
2. Set the Dock property to Fill, but also set a MinimumSize of the column defining a height
Completed
Last Updated: 15 Mar 2018 12:07 by Dimitar
To reproduce:

            this.radMultiColumnComboBox1.DataSource = this.customersBindingSource;
            this.radMultiColumnComboBox1.DisplayMember = "CustomerID";
            this.radMultiColumnComboBox1.AutoFilter = true;

            FilterDescriptor filter = new FilterDescriptor();
            filter.PropertyName = this.radMultiColumnComboBox1.DisplayMember;
            filter.Operator = FilterOperator.Contains;
            this.radMultiColumnComboBox1.EditorControl.MasterTemplate.FilterDescriptors.Add(filter);

1. Click the dropdown button, verify that all items list on drop down
2. Type into the textbox so only one item is left( e.g. "BERGS" )
3. While the drop-down is still opened, click the arrow button.
4. Focus another control on the form and then when the user clicks the arrow button, only one item is still shown in the drop down. 

Workaround:
        private void radMultiColumnComboBox1_DropDownClosed(object sender, RadPopupClosedEventArgs args)
        {
            this.radMultiColumnComboBox1.EditorControl.MasterTemplate.Refresh();
        }
Approved
Last Updated: 12 Feb 2018 10:50 by ADMIN
To reproduce:
- Add a GridViewMultiComboBoxColumn to a grid with wide columns.
- Call the following code in the CellEditorInitialized event handler

editor.EditorControl.LoadElementTree();
editor.AutoSizeDropDownHeight = true;

editor.AutoSizeDropDownColumnMode = BestFitColumnMode.AllCells;
editor.BestFitColumns(true, true);

- The drop down still has a horizontal scrollbar. 

Workaround:
editor.EditorControl.BestFitColumns(BestFitColumnMode.AllCells);

int desiredWidth = 0;
foreach (GridViewColumn column in editor.EditorControl.TableElement.ViewElement.RowLayout.RenderColumns)
{
    desiredWidth += column.Width + editor.EditorControl.TableElement.CellSpacing;
    desiredWidth -= editor.EditorControl.TableElement.CellSpacing;
}
editor.DropDownWidth = desiredWidth + 20;//20 in case the vertical scroll appears. 

Completed
Last Updated: 15 Aug 2017 10:54 by ADMIN
To reproduce: please refer to the attached sample project which result is illustrated in the attached gif file. The DropDownClosed is expected to be fired when the drop down is already closed. Hence, showing a message box shouldn't keep the drop down opened. The problem is reproducible with RadDropDownList as well. Note that this problem is not applicable for MS ComboBox.

Workaround:  this.radMultiColumnComboBox1.MultiColumnComboBoxElement.DropDownAnimationEnabled = false;
1 2 3 4 5 6