C# - mise en valeur de SelectedItem dans l'application Windows Forms
J'ai une simple application Windows Forms (avec une base de données Access) avec une zone de liste déroulante (cmbStores) qui est remplie de la façon la plus simple imaginable.
Problème: je ne suis pas en mesure d'obtenir la valeur de l'élément sélectionné.
Ici est la façon dont je suis le remplissage de cette zone de liste déroulante:
//Variable declaration
string strQueryStores = "SELECT StoreNumber FROM tblStoresAndRegion ORDER BY StoreNumber";
string strConnectionString = UtilityClass.GetConnectionString();
OleDbConnection connStores;
OleDbDataReader readerStores = null;
connStores = new OleDbConnection(strConnectionString);
try
{
connStores.Open();
OleDbCommand sqlGetStores = new OleDbCommand(strQueryStores, connStores);
cmbStore.Items.Clear();
cmbStore.Items.Add("All");
if (connStores != null)
{
readerStores = sqlGetStores.ExecuteReader();
if (readerStores.HasRows)
{
while (readerStores.Read())
{
cmbStore.Items.Add (Convert.ToInt32(readerStores["StoreNumber"]));
}
}
}
cmbStore.SelectedIndex = 0;
}
catch (OleDbException oledblEX)
{
MessageBox.Show(oledblEX.Message);
}
finally
{
if (readerStores != null)
readerStores.Close();
if (connStores != null)
connStores.Close();
}
C'est de cette façon que je suis en train d'essayer d'obtenir la valeur de l'élément sélectionné.
int nStoreNumber = Convert.ToInt32(cmbABSM.SelectedItem);
Où est le code que vous utilisez pour obtenir l'élément sélectionné? Êtes-vous d'obtenir une exception? Valeur incorrecte? Ce qui se passe lorsque vous essayez d'obtenir les éléments sélectionnés?
Vous obtenez une certaine incohérence dans votre code. Vous remplissez le cmdStore boîte et essayez de lire le cmbABSM boîte. Est-ce vraiment le cas, ou vous avez simplement fait une faute de frappe?
J'ai fait une faute de frappe ici. Le code doit être de type int nStoreNumber = Convert.ToInt32(cmbStore.SelectedItem);
Résolu (mais toujours confondu) ... Lorsque j'utilise ce code, int nStoreNumber = Convert.ToInt32(cmbStore.Texte); ça fonctionne.
Vous obtenez une certaine incohérence dans votre code. Vous remplissez le cmdStore boîte et essayez de lire le cmbABSM boîte. Est-ce vraiment le cas, ou vous avez simplement fait une faute de frappe?
J'ai fait une faute de frappe ici. Le code doit être de type int nStoreNumber = Convert.ToInt32(cmbStore.SelectedItem);
Résolu (mais toujours confondu) ... Lorsque j'utilise ce code, int nStoreNumber = Convert.ToInt32(cmbStore.Texte); ça fonctionne.
OriginalL'auteur KalC | 2012-04-25
Vous devez vous connecter pour publier un commentaire.
Je sais que je suis un peu en retard, mais cela fonctionne bien:
OriginalL'auteur TruthSeeker
Essayez d'utiliser
SelectedValue
siValueMember
est définie pour la zone de liste déroulante, sinon par défaut leText
propriété:De toute façon, je vous recommande de vous assurer que la valeur de ce qui est sélectionné est valide
int
.OriginalL'auteur Khan
ne
travail pour vous?
Vous devriez vraiment utiliser le
Value
ou laText
de propriété sur l'objet. Il n'est pas clair pour le lecteur qui est retourné parToString
.OriginalL'auteur csteinmueller
Vous pouvez utiliser SelectedItem.Valeur ou SelectedValue, la pratique, la différence est dans ce qu'ils reviennent quand il n'y a pas de sélection.
SelectedItem.Valeur renvoie la valeur, retourne null si il n'y a pas d'élément sélectionné.
SelectedValue renvoie également la valeur, mais renvoie une chaîne vide s'il n'existe aucun élément sélectionné
Pour en savoir plus:
http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.listcontrol.selecteditem.aspx
http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.listcontrol.selectedvalue.aspx
OriginalL'auteur NGRhodes