To reproduce: - Bind the control and set the auto filter functionality. - Type a value and press the tab key or click ouside of the control. - Subscribe to the DropDownClosed event and observe that the SelectedValue and the text are different. Workaround: void radMultiColumnComboBox1_DropDownClosed(object sender, Telerik.WinControls.UI.RadPopupClosedEventArgs args) { this.radMultiColumnComboBox1.Text = this.radMultiColumnComboBox1.SelectedValue.ToString(); }
To reproduce: - Add some items to the control and set the DropDownAnimationEnabled to false. - Programmatically select the third item - Start the application, open the drop down and scroll up with the mouse - you will notice that the grid is not scrolled up. Workaround: Set DropDownAnimationEnabled to true.
To reproduce: private void Form1_Load(object sender, EventArgs e) { this.categoriesTableAdapter.Fill(this.nwindDataSet.Categories); this.radMultiColumnComboBox1.DataSource = this.categoriesBindingSource; this.radMultiColumnComboBox1.DisplayMember = "CategoryName"; this.radMultiColumnComboBox1.ValueMember = "CategoryID"; this.radMultiColumnComboBox1.EditorControl.EnableFiltering = true; this.radMultiColumnComboBox1.EditorControl.ShowHeaderCellButtons = true; } Workaround: public Form1() { InitializeComponent(); this.radMultiColumnComboBox1.MultiColumnComboBoxElement.PopupClosing += MultiColumnComboBoxElement_PopupClosing; this.radMultiColumnComboBox1.EditorControl.FilterPopupInitialized += EditorControl_FilterPopupInitialized; } private void EditorControl_FilterPopupInitialized(object sender, FilterPopupInitializedEventArgs e) { RadListFilterPopup filterPopup = e.FilterPopup as RadListFilterPopup; if (filterPopup != null) { filterPopup.PopupOpened -= filterPopup_PopupOpened; filterPopup.PopupOpened += filterPopup_PopupOpened; filterPopup.PopupClosed -= filterPopup_PopupClosed; filterPopup.PopupClosed += filterPopup_PopupClosed; } } bool shouldCancel = false; private void filterPopup_PopupClosed(object sender, RadPopupClosedEventArgs args) { shouldCancel = false; } private void filterPopup_PopupOpened(object sender, EventArgs args) { shouldCancel = true; } private void MultiColumnComboBoxElement_PopupClosing(object sender, RadPopupClosingEventArgs args) { args.Cancel = shouldCancel; }
When filtering is applied to RadMultiColumnComboBox editor in CellEditorInitialized event of RadGridView, the selected item is second one, if the new row is edited. Workaround: change the event handler by adding the following lines of code in the end of the RadGridView1_CellEditorInitialized: Dim value As Object = e.Row.Cells(e.ColumnIndex).Value If value Is Nothing Then editor.EditorControl.CurrentRow = Nothing Else editor.Value = e.Row.Cells(e.ColumnIndex).Value End If
To reproduce: public partial class Form1 : Form { public Form1() { InitializeComponent(); Random r = new Random(); DataTable table = new DataTable(); table.Columns.Add("ID", typeof(int)); table.Columns.Add("Name", typeof(string)); for (int i = 0; i < 10; i++) { table.Rows.Add(i, "Row with longer value " + i); } radMultiColumnComboBox1.DropDownOpening += radMultiColumnComboBox1_DropDownOpening; radMultiColumnComboBox1.AutoSizeDropDownToBestFit = true; radMultiColumnComboBox1.DataSource = table; } void radMultiColumnComboBox1_DropDownOpening(object sender, CancelEventArgs args) { // radMultiColumnComboBox1.BestFitColumns(); } private void button1_Click(object sender, EventArgs e) { Random r = new Random(); DataTable table = new DataTable(); table.Columns.Add("ID", typeof(int)); table.Columns.Add("Name", typeof(string)); for (int i = 0; i < 10; i++) { table.Rows.Add(i, "Row " + i); } radMultiColumnComboBox1.DataSource = table; } } WORKAROUND: call the BestFitColumns method in the DropDownOpening event
Workaround: radMultiColumnComboBox1.DropDownOpening += new RadPopupOpeningEventHandler(radMultiColumnComboBox1_DropDownOpening); .... void radMultiColumnComboBox1_DropDownOpening(object sender, CancelEventArgs args) { int width = 0; foreach (GridViewDataColumn col in radMultiColumnComboBox1.EditorControl.Columns) { width += col.Width; } radMultiColumnComboBox1.MultiColumnComboBoxElement.MultiColumnPopupForm.MinimumSize = new Size(width, 0); }
Steps to reproduce: 1) Add RadGridView control 2) Add GridViewMultiComboBoxColumn column: GridViewMultiComboBoxColumn multiCoomboBoxColumn = new GridViewMultiComboBoxColumn(); multiCoomboBoxColumn.DataSource = customTable; Workaround: do not set the DropDownHeight property. Instead, you could set the AutoSizeDropDownToBestFit property to true and the MaxDropDownItems property, which gets or sets the maximum number of items to be shown in the drop-down portion. Here is a sample code snippet: RadMultiColumnComboBoxElement element = e.ActiveEditor as RadMultiColumnComboBoxElement; element.AutoSizeDropDownToBestFit = true; element.MaxDropDownItems = 20;
When set the SelectedIndex property in the DropDownClosed event selected index is not set correctly. Workaround: private void radMultiColumnComboBox1_DropDownClosed(object sender, Telerik.WinControls.UI.RadPopupClosedEventArgs args) { this.radMultiColumnComboBox1.SelectedIndex = 0; this.radMultiColumnComboBox1.EditorControl.CurrentRowChanging += new CurrentRowChangingEventHandler(EditorControl_CurrentRowChanging); } void EditorControl_CurrentRowChanging(object sender, CurrentRowChangingEventArgs e) { e.Cancel = true; this.radMultiColumnComboBox1.EditorControl.CurrentRowChanging -= EditorControl_CurrentRowChanging; }
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.
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; } } }
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.
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();
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
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.
Workaround: disable the animations this.radMultiColumnComboBox1.MultiColumnComboBoxElement.DropDownAnimationEnabled = false;
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.
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".
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);
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; }