J'espère que quelqu'un peut aider. Mais chaque fois que j'exécute mon code et essayez de voir un Quelqu'un peut-il voir pourquoi? p> code: p> highscore code> Tout ce que je reçois dans ma liste de liste est system.data.datawview code>.
12 Réponses :
Définissez votre lstnames.displaymember code> et lstnames.valuember code> champs. P>
Obtient ou définit la propriété pour afficher cette listeControl. p> blockQuote>
Obtient ou définit le chemin de la propriété à utiliser comme valeur réelle pour les éléments de la liste de liste. p> blockQuote>
Cela devrait résoudre votre problème .. p>
'System.windows.forms.listbox'Listbox' ne contient pas de définition pour "DaTatextfield" et aucune méthode d'extension 'DaTatTextfield' Accepter un premier argument de type 'System.Windows.Forms.Forms.Listbox' pourrait être trouvé (manquez-vous une directive à l'aide de la directive ou une référence d'assemblage?) C'est l'erreur que je reçois lorsque je fixe les deux
@CainNeal votre lstnames code> est listbox code> ou non?
Cela me donne juste le système.data.datawview comme je l'ai initialement, je viens de me demander sombre mais puis-je utiliser une étiquette au lieu d'une liste de liste?
@Cainneal bien i>, je ne suis pas sûr de votre "Comment utiliser Adapter" i> ou "Quel contrôle dois-je utiliser" i> questions mais je suis Bien sûr, si vous souhaitez obtenir des valeurs réelles de votre liste de liste, vous devez définir displaymember code> et ValuMember code> Propriétés.
J'ai mis à la fois des propriétés d'affichage et d'immatriculation, mais cela m'a donné la même entrée à ma liste de liste.
Comme je l'ai dit dans les commentaires, veuillez ajouter lstnames.databind () à votre code. EDIT: P> Pouvez-vous essayer cela: P > MySqlConnection myConn = new MySqlConnection(connStr);
string sqlStr = "SELECT CONCAT(Name, ' ', Score) as NameAndScore " +
"FROM highscore ORDER BY Score DESC";
myConn .Open();
SqlCommand cmd = new SqlCommand(sqlStr, SQLConnection1);
SqlDataReader rd = cmd.ExecuteReader();
while (rd.Read())
{
lstNames.Items.Add(rd[0]);
}
rd.Close();
rd.Dispose();
myConn.Close();
Il ne me permettra pas d'utiliser .Databind. Il dit que LstNames ne contient pas de définition, mais cela me permettra d'utiliser .Databindings
On dirait que vous utilisez une liste ListControl Pas une liste de liste, alors pouvez-vous simplement ajouter l'obéissance (voir modifier) et supprimer la base de données?
Je ne reçois toujours que 'system.data.datawview' pourrais-je utiliser le code ci-dessus si j'ai utilisé une étiquette au lieu d'une liste de liste? mais évoluer évidemment les noms de notes
Oubliez le Databindind code>. Cela n'existe pas dans Winforms et il n'est pas nécessaire, car il est évident que la liaison des données se produit déjà - sinon vous ne verriez aucun élément de votre liste.
Pour le code ci-dessus, je reçois un retour dans la liste des octets de la liste [] "
Le code suivant doit fonctionner:
DataSet dSet = new DataSet(); dAdapter.Fill(dSet); lstNames.DisplayMember = "NameAndScore"; lstNames.ValueMember = "NameAndScore"; lstNames.DataSource = dSet.Tables[0];
Pas tout à fait sûr comment trouver la valeur de retour pour dset.tables [0] mais quand j'ai testé, j'ai toujours "sytem.data.datawview" dans la liste
Avez-vous déjà débogué? Définissez un point d'arrêt sur le lstnames.displaymember = ... code> ligne, cliquez avec le bouton droit de la souris sur le mot dadapter code> et puis inspectez-le rapidement. Dans cette fenêtre, vous pouvez également entrer une valeur comme dadapter.tables [0] [0] code> pour voir les propriétés de la première ligne.
J'ai défini le point d'arrêt mais je ne trouve pas une option pour inspecter dadpter quand j'ai clic droit?
On peut appeler "montre rapide"
Je dois toujours faire face à ce problème, même si je définis le Votre code actuel est correct et devrait fonctionner , Si vous avez besoin d'accéder à la valeur d'élément sélectionnée actuelle de toute colonne de votre Qu'est-ce que j'aime Obtenir l'ensemble du displaymember code> et de la zone de liste. dTable code> Vous pouvez les faire faire cela: p> DataRowView code> est que si vous avez plus de colonnes, vous pouvez toujours accéder à leurs valeurs et faire tout ce dont vous avez besoin avec eux. P> P>
Si vous souhaitez que votre boîte de liste affiche les valeurs à partir d'une colonne spécifique de la source de données. lstnames.datatextfield = "SpecialColumnName"; P>
J'utilise:
Assurez-vous simplement que vous tapez le nom de champ identique à celui de DataSource dans un autre mot, il est une casse sensible à la casse p>
Alors: Me.gridlookupedit1.properties.displaymember = " cur_code strong>" est différent de Me.gridlookupeditt1.properties.displaymember = " cur_code strong>" p>
Si vous avez copié l'objet au lieu de passer comme un nouvel objet, cela fera cela. Essayez de supprimer l'objet et de la remettre. J'ai eu le même problème et c'est ce que j'ai fait. Je ne sais pas pourquoi ça a fonctionné, mais ça l'a fait. P>
Seul l'ordre des appels est faux. Premier régler le code> DataSource Code> et uniquement après cela, définissez l'élément d'affichage:
lstNames.DataSource = dTable; lstNames.DisplayMember = "NameAndScore";
J'ai eu le problème similaire de la sélection d'une valeur unique dans une liste populée et d'obtenir system.data.datawview code>.
J'ai été capable de le résoudre en casnant l'élément sélectionné à system.data.datawview code>, puis
Accès à la ligne et aux sous-classes de la ligne et de l'élément: var si = ListBox1.SelectedItem;
string val = ((System.Data.DataRowView)si).Row.ItemArray[0].ToString();
Parfois, ce qui pourrait causer le nom de la variable d'affichage d'affichage mal orthographié. P>
Pas une réponse. Veuillez utiliser des commentaires pour de telles remarques ou envisagez de la convertir en une réponse élaborée.
Je connais sa vieille question. Je pensais que cela pourrait être agréable d'ajouter une mise à jour aux réponses données déjà. Je cherchais une solution au même problème. I Le réalisé qu'il est dans quel ordre vous placez ces 3 lignes de code
lstNames.DataSource = dTable; lstNames.ValueMember = "NameAndScore"; lstNames.DisplayMember = "NameAndScore";