Ma procédure stockée est comme celle-ci J'ai une liste déroulante dans ASP.NET, que je charge comme: p> System.Web.httpException: Databinding: 'system.data.datawview' ne contient pas de propriété avec le nom 'id-étudiantname'. P>
blockQquote> Dans la partie texte de la liste déroulante, je souhaite afficher la valeur concaténée de Comment puis-je le faire? P > p> Databind () code> Déclaration, je reçois cette erreur: p>
ID - StudentName code>. P>
7 Réponses :
Vous pouvez modifier votre procédure stockée en: et modifier la liaison à: p>
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
foreach (var item in data) { new ListItem { Text = String.Format(..); }; }
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 b> ne fonctionne pas b>, 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.
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";
Vous pouvez y parvenir par code suivant pour plus de compréhension, reportez-vous à Ici . p> p>
J'ai la liste
Vous pouvez utiliser LINQ pour effectuer une nouvelle source de données contenant un écran de formatage formaté, comme vous le souhaitez, comme:
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"));
Si vous avez la liste de classe à remplir la liste déroulante, ceci est probablement préférable à faire;
Stackoverflow .Com / Questions / 1265587 / ... Il est toujours nécessaire de définir le fichier DaTatextfield et DataValuefield de votre dépose Dropdown.