'DropDownList1' a un SelectedValue qui n'est pas valide car il n'existe pas dans la liste des éléments. Nom du paramètre: valeur
Je suis en utilisant TemplateField
dans GridView
à mettre en œuvre edit/delete
à partir de la base de données.
Je suis l'Interrogation de Données avec le SqlDataSource
de Contrôle.
quand j'ai modifier le Tableau de la page j'obtiens l'erreur suivante:
'DropDownList1' a un SelectedValue qui est invalide parce qu'il n'
pas dans la liste d'éléments. Nom du paramètre: valeur
Cela est dû aux données à partir de dB n'est pas correspondant à l'un des DropDownList
nom de Pays.
Je comprends le problème de cette question (solution n'est pas donné!)
Je pense que lorsque j'insère les données dans la base de données, il ajoute automatiquement les espaces redondants de données(nom de pays)
Donc, la seule solution est de supprimer les espaces (Trim) de Chaîne afin d'obtenir une valeur de égalé dans l'un des DropDownList
éléments.
parce que <asp:DropDownList ID="DropDownList1" runat="server" SelectedValue='<%# Eval("Country")%>'
ne pas correspondre à tout élément de la liste de DropDownList
mais
<asp:DropDownList ID="DropDownList1" runat="server" SelectedValue='<%# Eval("Country").ToString().Trim()%>'>
correspond à l'élément de liste de liste déroulante.
Maintenant, je veux mettre à jour les données dans la base de données, mais à la place du nom du pays null obtenir une valeur stockée.
(Je pense que c'est la limitation de Eval()
)
Je puisse mettre à jour les données de la dB à l'aide de Bind()
mais Bind
ne prend pas en charge ToString().Trim()
donc je ne peux pas couper la chaîne à correspondre à l'un des éléments de DropDownList.
Comment puis-je mettre à jour des données à la dB?
mon le code brut
DropDownList1
Avant de définir la DataSource
À GridView
. afficher Votre code , où vous de remplir le GridView.là vous allez ideone.com/q9gqyF
reportez-vous à codepedia.info/2015/02/...
Essayez
SelectedItem='<%# Eval("Country").ToString().Trim()%>'
SelectedItem n'a pas wrk..encore des valeurs null
OriginalL'auteur JerryGoyal | 2015-08-10
Vous devez vous connecter pour publier un commentaire.
Je suis un peu confus quant à pourquoi cela ferait une différence.
Pourrais-tu nous montrer le code HTML brut qui ce contrôle DropDownList a créé, et la ligne qui vous tentez de modifier.
Pour afficher le HTML brut..
select
élément, qui ASP.Net a créé pour vous. Développer cet élément, voir laoption
éléments.Vous devriez voir une plus compliqué que la version de ce...
... et l'erreur que vous voyez suggère que lorsque vous cliquez sur l'une des lignes, sa valeur n'est pas exactement celui d'un
value
s répertorié dans laoption
s.Mise à jour
Après avoir regardé votre .fichier aspx, je vois que vous affichez une liste de noms de Pays, mais aucun n'a une Valeur:
Ne devraient-ils pas ressembler à ça...
...plutôt que de ce que...?
(Nouveau - utiliser google Chrome pour vérifier si votre liste déroulante des noms de pays ne ont un
Value
. S'ils ne le font pas, c'est ce qui explique l'erreur que vous voyez.)Mise à jour 2
Je suis voler le conseil suivant à partir de l'un des nombreux autres StackOverflow questions qui ont posé cette même question:
Essayez d'ajouter la ligne suivante dans votre
edittemplate
pour voir la valeur actuelle:Prises à partir d'ici
Cela devrait vous indiquer la
Value
c'est d'essayer de chercher, et ne peut pas trouver, dans la liste desoption
articles, créés par votre contrôle DropDownList.Voir "mettre à Jour" à ma réponse ci-dessus.
pour la chine, pays que je reçois ce à partir de chrome <span id="GridView1_Label5_1">la Chine </span>
et j'ai mis à jour le code <asp:ListItem Value="Corée du Nord">la Corée du Nord</asp:ListItem> pour tous les domaines, mais toujours le même problème
et il n'y a aucun avantage à utiliser la fonction Eval() car je ne peux pas mettre à jour la valeur de retour de dB
OriginalL'auteur Mike Gledhill
Après de me gratter la tête pendant plusieurs heures, enfin, j'ai trouvé la solution élégante pour les espaces problème.
Dans ma définition de la Table, Dans
Country
de définition de champ j'ai été en utilisantnchar(100)
au lieu denvarchar(100)
. L'ancien a toujours de 100 caractères (donc les espaces à droite), au plus tard, peut avoir jusqu'à 100 caractères, mais de ne pas remplir l'espace (ce qui correspond à l'élément dansDropDownlist
).En bref,
<asp:DropDownList ID="DropDownList1" runat="server" SelectedValue='<%# Bind("Country")%>'>
fonctionne bien maintenant.J'espère que cela aidera les futurs lecteurs.
OriginalL'auteur JerryGoyal
utiliser ceci:
nous avons pour couper la les espaces!
Pouvez-vous Dire ce que
Eval("Country")
obtenir la Valeur??Je pense que c'est l'obtention de la chaîne mais avec des espaces redondants becuz '<%# Eval("Pays").ToString().Trim()%>' fonctionne bien.
Déboguer votre code et Voir ce que la valeur
Eval("Country")
arriver,tandis que la liaison de la GridView.OriginalL'auteur A_Name_Does_Not_Matter