I am using an UltraComboEditor
The UltraComboEditor is linked to a List<> where the DisplayMember is set to "Description" and the ValueMember is Set to "ID"
the ID is an integer and is stored in the relevant field on the table.
the UltraComboEditor is Styled as a DropDown, Autocompletemode = Suggest, AutosuggestFilterMode = Contains, Limit to List = true.
my problem is that when my form is initialised to edit a new record, where the value for the combo box has not yet been set the text of the combobox has defaulted to "0"
This is a pain as and "0" is not in the List and when the user starts to type, they have to delete the "0"
As a work around I set the UltraComboEditor.Text = "" where UltraComboEditor.Text = "0" in the Value_Changed Event, (though this will not work if an entry in the list begins with "0"!)
How can I get the UltraComboEditor to initialise to "" (string.empty) instead of "0"?
Hello,
I will be happy to assist you with this issue.
I followed the steps you suggested and was unable to reproduce the behavior you're describing.
I have attached the sample project I used to test this. Please test this project on your PC; whether or not it works correctly may help indicate the nature of this problem.
If the project does not work correctly, this indicates either a problem possibly specific to your environment, or a difference in the DLL versions we are using. My test was performed using version 11.2.20112.2019 in NetAdvantage for .NET 2011 Volume 2.
If the project does show the product feature working correctly, this indicates a possible problem in the code of your application. It will help if you can provide a small, isolated sample application that demonstrates the behavior you are seeing.
Or, if this sample project is not an accurate demonstration of what you're trying to do, please feel free to modify it and send it back, or send a small sample project of your own if you have one.
Please let me know if I can provide any further assistance.
Please let me know if I may be of any further assistance regarding the sample I created to help reproduce this issue. I will follow up with you again in other three days if I don't receive a response.
Hello Jose
I have modified your example to replicate my issue
I have added a bindingsource and a TestObject with one property on it Testing1ID (int), linked the combobox to the bindingsource
I create a new instance of the TestObject and set this as the Datasource
as you can see the combobox now initialises to 0
I know that the default value for Testing1ID is 0, but we dont want Testing1ID to be a nullable int, and 0 is not in the combobox list, so it shouldn't be there!
This is happening in a lot of places where the ID of the look up is defaulting to 0 where it hasnt been set on a new entity, (I'm using LinqtoSQL entities), its a bit clumsy setting the combobox.text to "" where the combobox.value == 0 on all my forms.
am I missing a check box value somewhere or is there a better work around?
Hi,
I'm not sure what behavior you are expecting here. If you bind the Value property of the control to an object which returns a 0, the combo has no choice but to display that 0 whether it exists on the list or not. What's the alternative?
You should initialize the value of the initial object you are binding to to a value that exists on the list. Or you could add a 0 item to the list and show an empty string as it's text.
But the combo cannot arbitrarily choose an item from the list. And it cannot arbitrarily translate a 0 into a null because if it tried to save a null to your data source, this would raise an exception.
Hi Mike
I see where you are coming from. The alternative could be a variety of things though...
Is it possible to inherit and override the behaviour of the ComboEditor so that if it recieves a value that is not in the list I can specify what text is initially displayed rather than the index itself? (either empty string or a user defined prompt like <Please Select a Value>)
I got the behaviour I needed by getting the ValueChanged event to set the text to "" if the value == 0. Its not as clean a solution as I would like as my form code behind gets cluttered with ValueChanged event handlers
There are a number of ways that you could alter the display.
You could use a DrawFilter, which would allow you to override the drawing of the text. You could use a CreationFilter, which would allow you to change the text on the TextUIElement. Or you could try using a DataFilter, which allows you to translate the value from display text to editor value to owner value and vice versa.
The first two will only affect the display and will not have any effect once the control goes into edit mode. The DataFilter might work, but you would have to translate in both direction. So you would handle the EditorToDisplay transition and translate 0 to an empty string and then in the DisplayToEditor, you would do the reverse.
But to be honest, I'm not entirely sure this will work. You might run into a case where the control simply fails to account for the fact that the Value is not on the list when it's not supposed to allow this.
How do I submit a feature request?
I want to request that on an UltraComboEditor if LimitToList is set to true, and the control recieves a value not in the list (or null) that you have a choice of behaviours to select;
1) display the value
2) display a default message like "Please select an item from the list" or a user defined message
3) display empty.string
4) display first item in list