11
votes

Format Dropdownlist.TextValue

Ma procédure stockée est comme celle-ci xxx

J'ai une liste déroulante dans ASP.NET, que je charge comme: xxx < P> Mais au Databind () Déclaration, je reçois cette erreur:

System.Web.httpException: Databinding: 'system.data.datawview' ne contient pas de propriété avec le nom 'id-étudiantname'.

Dans la partie texte de la liste déroulante, je souhaite afficher la valeur concaténée de ID - StudentName .

Comment puis-je le faire?


0 commentaires

7 Réponses :


1
votes

Vous pouvez modifier votre procédure stockée en: xxx

et modifier la liaison à: xxx


3 commentaires

Merci, mais je ne peux pas changer la procédure stockée. C'est déjà en utilisateur à plusieurs endroits.


Si tel est le cas, vous devez faire boucler votre jeu de données, créer un nouveau jeu de données et créer une nouvelle colonne appelée texte et attribuer une carte ID + "-" + texte comme valeur et lier ce nouvel ensemble de données sur votre ComboBox.


Ne transformez pas la couche de données, faites-le sur le niveau de présentation



15
votes
foreach (var item in data)
{
    new ListItem { Text = String.Format(..); }; 
}

6 commentaires

Je reçois cette erreur à Databinding "DataNDinding: 'system.data.datawview' ne contient pas de propriété avec le nom 'ID, StudentName'.


Mais cela ne fonctionne toujours pas, la chaîne de format estime que "", comme mille séparateur au lieu d'un séparateur de nom de propriété.


Le lien ne fonctionne pas, je l'ai résolu maintenant en sélectionnant un nouvel objet anonyme qui a une propriété de nom affichant le texte combiné.


La solution première ne fonctionne pas , accédez à une troisième solution.


@Mrfox Nouveau objet anonyme?


@Kiquenet; Oui, la réponse est de 2011 lorsque MS Connect existait toujours, il a été retiré il y a presque 3 ans.



2
votes

Si la DataSource est un jeu de données, vous pouvez ajouter une "expression" (colonne calculée) à la table. L'expression de la nouvelle colonne ressemblerait à ceci:

newcolumn.Expression = "Id + ' - ' + StudentName";


0 commentaires

7
votes

Vous pouvez y parvenir par code suivant xxx

pour plus de compréhension, reportez-vous à Ici .


1 commentaires

J'ai la liste non de jeu de données ou de jeu de données.



16
votes

Vous pouvez utiliser LINQ pour effectuer une nouvelle source de données contenant un écran de formatage formaté, comme vous le souhaitez, comme: xxx


0 commentaires

-1
votes

C'est très simple, seulement vous avez des champs de concesses dans la requête

ddlA.DataSource = // Some source
ddlA.DataTextField = "TEXT";
ddlA.DataValueField = "Id";
ddlA.DataBind();
ddlA.Items.Insert(0, new ListItem(" Select one", "0"));


0 commentaires

2
votes

Si vous avez la liste de classe à remplir la liste déroulante, ceci est probablement préférable à faire; xxx


1 commentaires

Stackoverflow .Com / Questions / 1265587 / ... Il est toujours nécessaire de définir le fichier DaTatextfield et DataValuefield de votre dépose Dropdown.