I have a UltraCombo that is populated with a dataset such as this:
AccountID1, ItemKey1
AccountID1, ItemKey2
AccountID1, ItemKey3
AccountID2, ItemKey1
AccountID3, ItemKey1
*Dataset PrimaryKey is the ItemKey column
*DisplayMember for the UltraCombo is AccountID, ValueMember is ItemKey
1. User begins typing "AccountID1" into the combobox which drops down the grid to display the available records.
2. User select row containing ItemKey3
* ValueChanged event fires with UltraCombo.Value = ItemKey3
* ValueChanged event fires with UltraCombo.Value = ItemKey1
3. User clicks on the drop down to see that the selected row of the grid is AccountID1, ItemKey1--even though the row selected in step #2 was the row containing ItemKey3
I'm wondering if this has to do with the fact that there are multiple rows containing AccountID1--and as such the control loses track of the one that was actually selected.
It definately sounds like it's a problem with the duplicate display members. But I think the control should be able to handle this. What version of the control are you using? Do you have the latest Hot Fix?
If not, I recommend downloading it and see if it helps. If not, you should Submit an incident to Infragistics Developer Support and include a small sample project demonstrating the behavior so they can get it corrected.
I ran into the same issue. In some cases the RowSelected event gets fired twice. Just to add background information, it is using the AutoCompleteMode = SuggestAppend.
I think what is happening there is the AutoComplete event is changing the value when you loose focus and click on the row. Which causes it to update the "selected" value. Which in turn fires the RowSelected event a second time.
In my case, sometimes the event handlers argument would have the row the first time but not the second time. Which would remove the selection. Very odd.
My temporary hack fix was to sort the list after binding the data table. That seemed to fixed it.
cbShipToCustomers.DisplayLayout.Bands[0].Columns["Ship to Host"].SortIndicator = SortIndicator.Ascending;