To reproduce:
1. Run the form with RadMultiColumnCombobox on high dpi.
2. Set SelectedIndex to -1 (no value selected initially)
3. As a result, the first value get displayed in the text area.
In this particular case, the RadMultiColumnComboBoxElement is used as a custom editor inside RadPropertyGrid control. When the editor is shown it needs to be opened 3 times to correctly calculate its width. In addition, the font is scaled twice:
Use the following code and try to scroll item by item with the mouse wheel:
public RadForm1()
{
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.DisplayMember = "Name";
this.radMultiColumnComboBox1.ValueMember = "Id";
this.radMultiColumnComboBox1.DataSource = dt;
this.radMultiColumnComboBox1.ScrollOnMouseWheel = true;
this.radMultiColumnComboBox1.SelectedValueChanged+=radMultiColumnComboBox1_SelectedValueChanged;
}
private void radMultiColumnComboBox1_SelectedValueChanged(object sender, EventArgs e)
{
Console.WriteLine("Value: "+this.radMultiColumnComboBox1.SelectedValue);
}
Expected behavior: one item is scrolled at a time
Actual behavior: two items are scrolled at a time
Note: RadDropDownList behaves as expected.
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;
Any chance for an updated MCCB with EL like the new Textboxes?
Thanks,
_D
Using AutoCompleteMode.SuggestAppend caused other issues and I changed it to Suggest.
In the example program I provided if I type in "meadows " meadows and a space I should get the following Suggested List.
SUGGESTED LIST
Meadows Green
However I get " Meadows" selected with a space at the front of the word.
Sample program that illustrates the issue can be downloaded from here: https://www.dropbox.com/s/8qxhmxai0y4w7qg/FilterMultiColumn.zip?dl=0
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.
AutoSizeDropDownToBestFit is not working when i have 3 rows in the drop down list. Scroll bars appear with i have 3 rows, and when i only 2 rows it autosize the width of the dropdown.
[Code ]
Dim TransData As DataTable = New DataTable
TransData.Columns.Add("Index")
TransData.Columns.Add("Type")
TransData.Rows.Add("0", "-- Select --")
TransData.Rows.Add("SEA", "Ship by Sea")
TransData.Rows.Add("AIR", "Ship by Air")
TransData.Rows.Add("VOR", "VOR by Air")
TransportRadMultiColumnComboBox.DataSource = TransData
TransportRadMultiColumnComboBox.DisplayMember = "Type"
TransportRadMultiColumnComboBox.ValueMember = "Index"
TransportRadMultiColumnComboBox.Columns(0).IsVisible = False
TransportRadMultiColumnComboBox.Columns(1).HeaderText = "Transport"
TransportRadMultiColumnComboBox.AutoSizeDropDownToBestFit = True
[Works when i have only 2 rows in my DataTable]
When i add 3 rows to my dataTable the AutoSizeDropDownToBestFit does not work.. WHYYYYYYYY??????
Dear support,
I have an issue with a multicolumn combobox that won't close upon selection.
The first time (when it is empty) everything goes well, but the second time (in the attached video around the 10th second) it won't close the dropdown if you select the item again.
I suspect it is acting that way because I select the same item.
It is an annoying behavior because now users need to click on the little arrow to close the drop down, which is not intuitive.
I recorded a video that illustrates this issue.
Many thanks again.
Kind regards.
Peter.
Workaround:
Workarond:
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.
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.
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:
==> 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.