2013-06-13 1 views
1

Existe-t-il un moyen de stocker à la fois les valeurs ID et Test ID dans la liste déroulante, mais j'ai besoin d'afficher DisplayName? J'ai besoin de ces deux valeurs lorsque l'élément est sélectionnéEnregistrement de deux valeurs d'une vue de données dans une liste déroulante

ID | TestID | DisplayName 
1 | 2 | Test 

Exemple de code:

ddList.DataSource = DvName; 
ddList.DataTextField = "DisplayName"; 
ddList.DataValueField = "ID"; // + "TestID" ??? 
+0

ASP.NET? WinForms? WPF ?? –

+0

Mis à jour comme ci-dessus – Standage

Répondre

2

Vous pouvez utiliser un séparateur pour mettre les deux valeurs ensemble puis les délimiter une fois que vous les sortez.

ddList.DataValueField = obj.ID + "~" + obj.TestID; 

Sinon, vous pouvez créer un dictionnaire qui détiennent l'ID et l'ID de test, de sorte que lorsque vous sélectionnez votre article dans le menu déroulant, vous pouvez utiliser le champ de valeur comme la clé du dictionnaire et sélectionnez le testid.

private Dictionary<string, string> referenceValues = new Dictionary<string, string>(); 
referenceValues.Add("ID", "TestID"); 
ddList.DataValueField = "ID"; 
//When pulling then value back 
var referencedItem = referenceValues[ddList.selectedValue]; 
+0

Comme cette solution mais var n'est pas reconnu dans 2.0 ?! – Standage

+1

'referencedItem' dans la réponse est de type' string'. De la question, 'referenceValues' devrait probablement être un' Dictionary 'et vous devriez' referenceValues.Add (1, 2). –

+0

@DourHighArch c'est correct, j'ai raté ça. OP, Merci, n'était pas au courant de la version utilisée, pourrait simplement être affecté quel que soit le type défini par le dictionnaire dans cette chaîne de caractères ou s'il était défini sur Dictionnaire int. –

0

En supposant que vous utilisez une classe pour chaque instance de vos données; ajouter une autre propriété à la classe et se lient à cette propriété:

public class MyObject 
{ 
    //other stuff 
    public string DisplayValue 
    { 
    get { return String.Format("{0} ({1})", ID, TestID); } 
    } 
} 

ddList.DataSource = DvName; 
ddList.DataTextField = "DisplayName"; 
ddList.DataValueField = "DisplayValue"; 
+0

Aucune classe pour les données, son à partir d'une procédure stockée (base de données SQL) – Standage

0

En supposant que vous obtenez ces valeurs d'un modèle que vous pourriez faire quelque chose comme:

public string NewValue 
{ 
    get 
    { 
     return ID+ "," + TestId; 
    } 
} 

ddList.DataSource = DvName; 
ddList.DataTextField = "DisplayName"; 
ddList.DataValueField = "NewValue"; 
Questions connexes