2010-10-28 5 views
0

У меня есть DevExpress LookUpEdit, который я использую с Visual Studio 2008 в VB.Net.Не могу отменить мой DevExpress LookUpEdit

У меня есть LookUpEdit, привязанный к моему источнику данных, и значение, которое оно отображает, может быть нулевой или одной из строк в источнике данных. Моя программа отображает твилист, и когда узел выбирает, LookUpEdit должен отображать назначенное значение (может быть null) и позволить пользователю переназначить значение. У меня есть LookUpEdit.Properties.AllowNullInput установлен в True. Прямо сейчас, когда программа запускается первым, если первый узел в списке, который я выбираю, имеет нулевое значение, LookUpEdit ничего не отображает, если я изменил значение LookUpEdit на изменение значения в базе данных, если я перейду на узел, который имеет значение для LookUpEdit показывает значение.

Проблема в том, что если я переключусь с узла со значением на один без LookUpEdit, вы увидите предыдущее значение. Я прошел через отладчик, и он все еще правильно проходит выборку.

Я попытался сбросить LookUpEdit.Text, LookUpEdit.EditValue и LookUpEdit.SelectedText, но ничего не работает. Я даже копировал условия, которые имеет LookUpEdit, когда он сначала ничего не отображает (LookUpEdit.Text = "" и LookUpEdit.EditValue = ""), но он по-прежнему отображает последнее значение.

Я устанавливаю фактическое значение с lueLocation.EditValue = lueLocation.Properties.GetKeyValueByDisplayText (VALUENAME)

EDIT

Так что я сузили его. После того, как я не установил значение Text и EditValue в

lueLocation.Text = Nothing 
lueLocation.EditValue = Nothing 

Значения установлены. Проблема в том, что в процессе установки значения открывается раскрывающееся меню. Поэтому я закрываю его с lueLocation.ClosePopup(). По какой-то причине, когда он вызван, он меняет .Text и .EditValue обратно на предыдущие значения и, таким образом, вызывает TextChanged Event.

Не знаю, почему, но я не могу оставить раскрывающееся меню открытым.

ответ

1

Я решил проблему. Как вы можете видеть в Edit, это был lueLocation.ClosePopup(), который фактически заставил его вернуться к предыдущим значениям .Text и .EditValue. Я удалил lueLocation.ClosePopup(), который затем вызвал мой интерфейс, чтобы выпадающие списки оставались открытыми, если значение было null и закрыто, если было фактическое присвоенное значение.

Я обнаружил, что если я установил .EditValue к DBNull.Value (lueLocation.EditValue = DBNull.Value), а не Nothing, "" или " " это установить значение, присвоенное LookUpEdit ни к чему, и автоматически закрывается ниспадающее меню.

3

Как правило, в пользовательском интерфейсе комбинация клавиш Ctrl-Del должна очищать ее и ничего не устанавливать. В противном случае в коде вы должны установить EditValue = Nothing и это должно сделать это.

Вот несколько ссылок на сайте DX:

Поиск: 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

+0

Нажатие Ctrl-Del очищает его. Но когда я выбираю новый узел, он повторно извлекает данные для LookUpEdit. Тогда, если новое значение ничего (так что хотите показать пробел), LookUpEdit отображает предыдущее (старое) значение. – Kyra

+0

Я попытался установить EditValue в "", "" и Nothing (я использую VB). И никто из них не понял этого. Он просто отображает предыдущее значение. – Kyra

+0

Это странно. Это сработало хорошо для меня. Вы отправили вопрос на поддержку в DevExpress. Включение некоторого кода с запросом на поддержку всегда, кажется, дает лучший наиболее точный ответ. –

Смежные вопросы