2010-10-28 3 views
0

J'ai un DevExpress LookUpEdit que j'utilise avec Visual Studio 2008 dans VB.Net.Je ne peux pas désélectionner mon DevExpress LookUpEdit

J'ai le LookUpEdit lié à ma source de données et la valeur qu'il affiche peut être nulle ou l'une des lignes de la source de données. Mon programme affiche une liste des arbres et quand un noeud est sélectionné, LookUpEdit est censé afficher la valeur assignée (peut être nulle) et laisser l'utilisateur réaffecter la valeur. J'ai LookUpEdit.Properties.AllowNullInput sur True. Maintenant que le programme démarre si le premier noeud de la liste de choix que je choisis a une valeur nulle, LookUpEdit n'affiche rien, si je change la valeur de LookUpEdit, la valeur change dans la base de données, si je change de noeud valeur pour le LookUpEdit la valeur affiche.

Le problème est que si je passe d'un noeud avec une valeur à un sans que LookUpEdit affiche la valeur précédente. Je suis passé par le débogueur et il continue à aller chercher correctement.

J'ai essayé de réinitialiser le LookUpEdit.Text, LookUpEdit.EditValue et LookUpEdit.SelectedText mais rien ne fonctionne. J'ai même répliqué les conditions que LookUpEdit a quand il n'affiche rien (LookUpEdit.Text = "" et LookUpEdit.EditValue = "") mais il affiche toujours la dernière valeur.

Je suis en train de la valeur réelle avec lueLocation.EditValue = lueLocation.Properties.GetKeyValueByDisplayText (valueName)

EDIT

Je rétrécis vers le bas. Après avoir défini le texte et EditValue à zéro

lueLocation.Text = Nothing 
lueLocation.EditValue = Nothing 

Les valeurs sont définies. Le problème est que le fait de définir la valeur ouvre le menu déroulant. Donc, je l'obtiens à fermer avec lueLocation.ClosePopup(). Pour une raison quelconque, quand il est appelé, il modifie les .Text et .EditValue aux valeurs précédentes et appelle ainsi le TextChanged Event.

Aucune idée pourquoi mais je ne peux pas garder le menu déroulant ouvert.

Répondre

1

Je résolu le problème. Comme vous pouvez le voir dans l'édition, c'est le lueLocation.ClosePopup() qui l'a fait revenir aux valeurs .Text et .EditValue précédentes. J'ai enlevé le lueLocation.ClosePopup() qui a alors provoqué l'ouverture des listes déroulantes de mon interface si la valeur était nulle et fermée s'il y avait une valeur assignée réelle.

Je trouve que si je mets le .EditValue à DBNull.Value (lueLocation.EditValue = DBNull.Value) plutôt que Nothing, "" ou " " il définir la valeur attribuée à la LookUpEdit à rien et ferme automatiquement le menu déroulant.

3

Généralement dans l'interface utilisateur, la combinaison de touches Ctrl-Del doit l'effacer et la mettre à zéro. Sinon, dans le code, vous devriez pouvoir définir EditValue = Nothing et cela devrait le faire.

Voici quelques liens sur le site DX:

Recherche: 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

Si vous appuyez sur Ctrl-Suppr, cela effacera le message. Mais quand je sélectionne un nouveau nœud, il récupère les données pour le LookUpEdit. Ensuite, si la nouvelle valeur n'est rien (alors que vous voulez afficher un blanc), le LookUpEdit affiche l'ancienne (ancienne) valeur. – Kyra

+0

J'ai essayé de mettre les EditValue à "", "", et Nothing (j'utilise VB). Et aucun d'entre eux ne le nettoie. Il affiche juste la valeur précédente. – Kyra

+0

C'est bizarre. Cela a fonctionné très bien pour moi. Avez-vous soumis une question à soutenir à DevExpress. Y compris un code avec une demande de support semble toujours obtenir la meilleure réponse la plus précise. –

Questions connexes