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(); }
To reproduce: 1. Open the Telerik Examples application (Quick Start Framework) 2. Go to the MultiColumnComboBox example 3. Enter partial text into the box 4. Click on title to lose focus. You will see that the text will be not cleared. When use Tab key, the text will be cleared.
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; }
To reproduce: -add RadMultiColumnComboBox and bind it to some collection. Use the following code: radMultiColumnComboBox1.MultiColumnComboBoxElement.EditorControl.ShowItemToolTips = true; radMultiColumnComboBox1.MultiColumnComboBoxElement.EditorControl.ToolTipTextNeeded += EditorControl_ToolTipTextNeeded; private void EditorControl_ToolTipTextNeeded(object sender, Telerik.WinControls.ToolTipTextNeededEventArgs e) { e.ToolTipText ="some text"; } As a result the tool tip is not shown. Workaround:use ScreenTipNeeded event instead
Using my two screenshots and values, note: 1. Using Keyboard: I have 'A' selected and type a single 'W' to change my selection and hit enter. The next drop-down will still display at the width you see for the original A selection. It will not be until the next drop-down that it resizes correctly. 2. Using Mouse: I have 'A' selected and select the 'WWWW...." from the drop-down with my mouse. The drop-down will appear correctly the next time.
1. Create a new project with RadMultiColumnComboBox 2. Add rows in unbound mode 3. On a timer clear the Rows collection and insert new rows 4. Run the application and open and close the drop down several times
1. Create a project with RadGridView 2. Add a GridViewMultiComboBoxColumn 3. Attach to CellEditorInitialized event and try to handle PopupOpened event to change the popup size.
Current item of RadMultiColumnComboBox is changed, when RadDock's document window position is changed.
TextChanged event of RadMultiColumnComboBox is not fired on many occasions.
To reproduce: Add a RadMultiColumnComboBox and add a DateTime column. Add a filter descriptor for the column and set the autofilter property to true. Type in the textbox and you will see abnormal behavior. Workaround: public class DTConverter : TypeConverter { public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value) { DateTime dt; if (DateTime.TryParse(value.ToString(), out dt)) { return dt; } return DateTime.MinValue; } public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType) { if (sourceType == typeof(string) || sourceType == typeof(DateTime)) { return true; } return base.CanConvertFrom(context, sourceType); } } (this.multiColumnComboBox.MultiColumnComboBoxElement.Columns["SaleDate"] as GridViewDateTimeColumn).FilteringMode = GridViewTimeFilteringMode.Date; (this.multiColumnComboBox.MultiColumnComboBoxElement.Columns["SaleDate"] as GridViewDateTimeColumn).DataTypeConverter = new DTConverter(); Telerik.WinControls.Data.FilterDescriptor oFilter = new Telerik.WinControls.Data.FilterDescriptor(); oFilter.PropertyName = this.multiColumnComboBox.DisplayMember; oFilter.Operator = Telerik.WinControls.Data.FilterOperator.IsGreaterThanOrEqualTo; this.multiColumnComboBox.EditorControl.MasterTemplate.FilterDescriptors.Add(oFilter);
When you select a row by pressing the left mouse button twice, you will select a wrong row if RadMultiColumnComboBox has filter applied.
When you have a GridViewMultiComboBoxColumn in RadGridView, you can't set a custom size to the dropdown easily.
This scenario is reproducible when the MCCB dropdown has 1 item. To disable the selection of the row we can set the EditorControl.CurrentRow to null. However, when the dropdown is open the Text property is set to the first row.
- Add a RadMultiColumnComboBox and populate it with data.
- Hide most of the columns.
- Enable the AutoSizeDropDownToBestFit property
Note: the issue is reproducible with ControlDefault, Office2019Light, Desert. But it is NOT reproducible with Fluent
private void RadForm1_Load(object sender, EventArgs e)
{
// TODO: This line of code loads data into the 'nwindDataSet.Orders' table. You can move, or remove it, as needed.
this.ordersTableAdapter.Fill(this.nwindDataSet.Orders);
this.radMultiColumnComboBox1.DisplayMember = "OrderID";
this.radMultiColumnComboBox1.ValueMember = "OrderID";
this.radMultiColumnComboBox1.DataSource = ((DataSet)ordersBindingSource.DataSource).Tables[0].AsEnumerable().Reverse().Take(5);
this.radMultiColumnComboBox1.UseCompatibleTextRendering = false;
foreach (GridViewColumn col in this.radMultiColumnComboBox1.EditorControl.Columns)
{
if (!col.Name.Contains("ID") && !col.Name.Contains("OrderDate"))
{
col.IsVisible = false;
}
}
this.radMultiColumnComboBox1.AutoSizeDropDownColumnMode = BestFitColumnMode.AllCells;
this.radMultiColumnComboBox1.AutoSizeDropDownToBestFit = true;
return;
}
Expected result:
Actual result:
Workaround: instead of hiding the redundant columns, you can remove them:
List<string> columnNames = new List<string>();
foreach (GridViewColumn col in this.radMultiColumnComboBox1.EditorControl.Columns)
{
if (!col.Name.Contains("ID") && !col.Name.Contains("OrderDate"))
{
columnNames.Add(col.Name);
//col.IsVisible = false;
}
}
while (columnNames.Count>0)
{
this.radMultiColumnComboBox1.Columns.Remove(columnNames[0]);
columnNames.RemoveAt(0);
}
This issue is reproducible only in .NET 6. It works OK in .NET 4.8.
Use the following code snippet:
public RadForm1()
{
InitializeComponent();
List<Student> collectionOfStudents = new List<Student>();
collectionOfStudents.Add(new Student(0, "Peter", "A+"));
collectionOfStudents.Add(new Student(1, "John", "D-"));
collectionOfStudents.Add(new Student(2, "Antony", "B+"));
collectionOfStudents.Add(new Student(3, "David", "A-"));
collectionOfStudents.Add(new Student(4, "John", "D-"));
this.radMultiColumnComboBox1.DisplayMember = "Name";
this.radMultiColumnComboBox1.ValueMember = "Id";
this.radMultiColumnComboBox1.DataSource = collectionOfStudents;
this.radMultiColumnComboBox1.AutoCompleteMode = AutoCompleteMode.Append;
}
public class Student
{
int m_id;
string m_name;
string m_grade;
public Student(int m_id, string m_name, string m_grade)
{
this.m_id = m_id;
this.m_name = m_name;
this.m_grade = m_grade;
}
public int Id
{
get
{
return m_id;
}
set
{
m_id = value;
}
}
public string Name
{
get
{
return m_name;
}
set
{
m_name = value;
}
}
public string Grade
{
get
{
return m_grade;
}
set
{
m_grade = value;
}
}
}
Type "David" in the editor and hit Backspace:
Expected: every Backspace hitting should delete the last character:
Actual: it is not possible to delete the text:
Workaround:
this.radMultiColumnComboBox1.AutoCompleteMode = AutoCompleteMode.Suggest;
To reproduce use the following code snippet and press the Enter key on group header row:
public RadForm1()
{
InitializeComponent();
GroupDescriptor descriptor = new GroupDescriptor();
descriptor.GroupNames.Add("CategoryName", ListSortDirection.Ascending);
this.radMultiColumnComboBox1.EditorControl.GroupDescriptors.Add(descriptor);
this.radMultiColumnComboBox1.EditorControl.EnableGrouping = true;
this.radMultiColumnComboBox1.EditorControl.ShowGroupedColumns = true;
}
Please refer to the attached sample project and follow the steps from the gif file.
1) User does a search operation
2) BackgroundWorker does its task and finishes at some point, then set defaults to select the first result.
3) User selects a different result row.
4) Selected record still indicates and points to the first result.
Workaround:
Me.RadMultiColumnComboBox1.EditorControl.MasterView.TableSearchRow.AutomaticallySelectFirstResult = False
When you copy "Chang" and try to paste it in the editable area, it is not pasted even if the Clipboard data is a valid entry:
Me.RadMultiColumnComboBox1.DisplayMember = "ProductName"
Me.RadMultiColumnComboBox1.ValueMember = "ProductID"
Me.RadMultiColumnComboBox1.DataSource = ProductsBindingSource
Me.RadMultiColumnComboBox1.AutoCompleteMode = AutoCompleteMode.Append
Me.RadMultiColumnComboBox1.MultiColumnComboBoxElement.LimitToList = True
However, the context menu in the text box is available and you can paste even invalid value.
When RadGridView is unbound and you try to create the columns for the RadMultiColumnComboBox manually, RadGridView throws an exception: "Cannot find column bound to 'field name'"