dropdownlist DataTextField composé de propriétés?
est-il un moyen de rendre les propriétés de datatextfield propriété d'un dropdownlist dans asp.net via c# composée de plus d'une propriété d'un objet?
public class MyObject
{
public int Id { get; set; }
public string Name { get; set; }
public string FunkyValue { get; set; }
public int Zip { get; set; }
}
protected void Page_Load(object sender, EventArgs e)
{
List<MyObject> myList = getObjects();
ddList.DataSource = myList;
ddList.DataValueField = "Id";
ddList.DataTextField = "Name";
ddList.DataBind();
}
Je veux par exemple, ne pas utiliser le "Nom", mais "le Nom (Zip)" par exemple.
Sûr, je peux changer le MyObject Classe, mais je ne veux pas le faire (parce que le MyObject Classe est dans une classe de modèle et ne devrait pas faire quelque chose de ce dont j'ai besoin dans l'INTERFACE utilisateur).
source d'informationauteur karlis
Vous devez vous connecter pour publier un commentaire.
Ajouter une autre propriété de la MyObject de la classe et de se lier à la propriété :
Ou si vous ne pouvez pas modifier MyObject, créer un wrapper objet dans la couche de présentation (juste pour l'affichage). Cela peut aussi être fait en utilisant LINQ:
(désolé je n'ai pas de Visual Studio disponible, donc il y aura peut-être des erreurs dans le code)
Je vous recommande de lire ceci: http://martinfowler.com/eaaDev/PresentationModel.html
Essentiellement, vous voulez créer une classe qui représente une liaison avec une INTERFACE utilisateur particulier. Si vous mappez votre Modèle (Mon Objet dans votre exemple) à un ViewModel objet, puis lier la liste déroulante de cette façon. C'est une façon cool de penser à la séparation des préoccupations.
EDIT: Voici une autre série de blog sur ViewModel: http://blogs.msdn.com/dancre/archive/2006/10/11/datamodel-view-viewmodel-pattern-series.aspx
BTW,
Essayez d'assigner les "propriétés de datatextfield" et "DataValueField" avant d'attribuer la source de données. Vous empêcherez ainsi la cuisson de la "SelectedIndexChanged" de l'événement, tandis que la liaison de données...