Question

Modifier 1

Je crois que mon problème découle de ce qui suit. La fonction qui remplit la partie déroulante définit le membre d'affichage sur CountyName. Ensuite, lorsque j'essaie de définir SelectedText ou EditValue, comme cela a été suggéré, cette fonction ne renvoie que le CountyID qu'il tente de faire correspondre à quelque chose de la liste déroulante DisplayMember. J'ai besoin de le faire correspondre à quelque chose dans la liste ValueMember.

En utilisant ce qui suit, je l’ai obtenu au travail, mais c’est un HACK et j’apprécierais beaucoup de trouver une solution réelle.

lkuResidenceCounty.ItemIndex = Convert.ToInt32(row["ResidencyCountyID"].ToString());

Message d'origine

J'ai une boîte de recherche (DevExpress) sur un formulaire membre dans laquelle je remplis les valeurs possibles à partir de la base de données avec ce code - >

        lkuResidenceCounty.Properties.DataSource = ConnectBLL.BLL.Person.CountyList();
        lkuResidenceCounty.Properties.PopulateColumns();
        lkuResidenceCounty.Properties.DisplayMember = "CountyName";
        lkuResidenceCounty.Properties.ValueMember = "CountyID";
        lkuResidenceCounty.Properties.Columns[0].Visible = false;
        lkuResidenceCounty.Properties.Columns[2].Visible = false;
        lkuResidenceCounty.Properties.Columns[3].Visible = false;

Cela fonctionne très bien car le CountyName est affiché comme prévu.

Cependant, lorsque j'essaie de charger la valeur d'un membre existant pour ce champ à l'aide de l'option ci-dessous, qui fait partie d'une fonction qui prend une ligne du DataSet - >

lkuResidenceCounty.Properties.ValueMember = row["ResidencyCountyID"].ToString();

Je reçois une case vide. J'ai parcouru le code et l'identifiant correct est renvoyé pour le membre.

Malheureusement, la procédure stockée pour remplir les options de liste déroulante est extraite d'une table de maintenance avec les colonnes " CountyName " & amp; "CountyID". Donc c'est correct. Malheureusement, la procédure stockée permettant de charger le comté actuel d'une personne spécifique est extraite de la table des personnes dans laquelle se trouve une colonne intitulée "ResidencyCountyID". Il est ainsi nommé car il existe également un "ResponsibilityCountyID". colonne.

J'ai besoin d'un moyen de faire coexister les deux, des solutions?

Merci!

Autres conseils

La propriété ValueMember indique à la liste le champ à extraire lors de la définition de la propriété Value. Une fois que vous avez défini ValueMember sur "CountyID", il définira toutes les propriétés de valeur des éléments de liste sur les champs CountyID de leurs objets de respect.

Par conséquent, vous ne devriez pas faire:

lkuResidenceCounty.Properties.ValueMember = row["ResidencyCountyID"].ToString();

mais plutôt

lkuResidenceCounty.Properties.ValueMember = "CountyID";

était parfaitement correct, tant que vous avez correctement identifié le champ que vous essayez de rechercher par la donnée. Une fois que la liste est liée aux données, vous devriez voir les résultats que vous attendez.

Cependant, après avoir examiné votre code, il semble que vous ne correspondiez pas à votre champ. Dans un endroit, vous utilisez ResidencyCountyID et dans un autre, vous utilisez CountyID. C'est probablement votre source de confusion. Déterminez le nom du champ et assurez-vous de définir le ValueMember sur ce nom.

MISE À JOUR

Après avoir lu votre commentaire, vous recherchez la propriété SelectedValue. La propriété SelectedValue indique à la liste de forcer la valeur sélectionnée à l’entrée que vous lui donnez.

En gros, il y a deux choses qui se passent ici. ValueMember indique à la liste ce qu'il faut utiliser comme valeur de votre source de données, et SelectedValue, qui indique à la liste quelle doit être la valeur actuellement sélectionnée.

Pourquoi avez-vous besoin du même LookUpEdit pour avoir deux membres de valeur? Est-il utilisé seul ou dans une grille? Si vous êtes autonome, vous pouvez permuter les deux éditeurs de référentiel en fonction de la ligne en cours. Mais existe-t-il plus de 2 valeurs possibles pour ValueMember? Cela compliquerait aussi les choses.

MISE À JOUR

En regardant votre montage, je pense comprendre un peu plus ce qui se passe. Vous ne souhaitez donc pas modifier votre ValueMember (qui fait référence à une colonne de données), mais plutôt la valeur de l'éditeur? Si tel est le cas, vous devez absolument utiliser EditValue (et non SelectedText, ce qui, à mon avis, n'est pas censé être défini), et l'affecter à la ligne ["quot_ value_field"] comme suit:

lkuResidenceCounty.EditValue = row["ResidencyCountyID"];

Que se passe-t-il quand vous faites cela?

scroll top