views:

27

answers:

2

I have a DevExpress LookUpEdit that I am using withing Visual Studio 2008 in VB.Net.

I have the LookUpEdit bound to my datasource and the value that it is displaying may be null or one of the rows in the datasource. My program displays a treelist and when a node is select the LookUpEdit is supposed to display the assigned value (could be null) and let the user reassign the value. I do have the LookUpEdit.Properties.AllowNullInput set to True. Right now when the program first starts if the first node in the treelist I choose has a null value the LookUpEdit displays nothing, if I change the value of the LookUpEdit the value changes in the database, if I change to a node that has a value for the LookUpEdit the value does display.

The problem is that if I switch from a node with a value to one without the LookUpEdit displays the previous value. I have gone through the debugger and it is still going through the fetch properly.

I have tried to reset the LookUpEdit.Text, LookUpEdit.EditValue and LookUpEdit.SelectedText but nothing works. I even replicated the conditions that the LookUpEdit has when it first displays nothing (LookUpEdit.Text = "" and LookUpEdit.EditValue = " ") but it still displays the last value.

I am setting the actual value with lueLocation.EditValue = lueLocation.Properties.GetKeyValueByDisplayText(valueName)

EDIT

So I narrowed it down. After I set the Text and EditValue to nothing

lueLocation.Text = Nothing
lueLocation.EditValue = Nothing

The values are set. The problem is that in the act of setting the value the dropdown menu opens. So I get it to close with lueLocation.ClosePopup(). For some reason when it gets called it changes the .Text and .EditValue back to the previous values and thus calls the TextChanged Event.

No clue why but I can't keep the dropdown menu open.

+2  A: 

Generally in the UI the key combination of Ctrl-Del should clear it and set it to nothing. Otherwise in code, you should be able to set the EditValue = Nothing and that should do it.

Here are a couple of links on the DX site:

Search: http://search.devexpress.com/?q=clear+lookupedit&p=T4%7cP1%7c4&d=447

http://www.devexpress.com/Support/Center/p/Q96464.aspx http://www.devexpress.com/Support/Center/p/Q270901.aspx

J. Clay
Pressing Ctrl-Del does clear it. But when I select a new node it re-fetches the data for the LookUpEdit. Then if the new value is nothing (so want to show a blank) the LookUpEdit displays the previous (old) value.
Kyra
I have tried to set the EditValue to "", " ", and Nothing (I'm using VB). And none of them clear it. It just displays the previous value.
Kyra
That's odd. This has worked fine for me. Have you submitted a question to support at DevExpress. Including some code with a support request always seems to get the best most accurate answer.
J. Clay
Thanks, I got it and not sure why that worked and not the other values.
Kyra
A: 

I solved the problem. As you can see in the Edit it was the lueLocation.ClosePopup() that actually caused it to revert back to the previous .Text and .EditValue values. I removed the lueLocation.ClosePopup() which then caused my interface to have the dropdowns remain open if the value was null and closed if there was an actual assigned value.

I found that if I set the .EditValue to DBNull.Value (lueLocation.EditValue = DBNull.Value) rather than Nothing, "", or " " it set the value assigned to the LookUpEdit to nothing and automatically closed the dropdown menu.

Kyra