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; }