2011-04-08 4 views
9

J'ai défini combobox.datasource sur un élément dataview (afin qu'il se lie à une table), lorsque j'obtiens la valeur de retour de combobox.selectedvalue. Erreur a été renvoyée bcos est de type « system.data.datarowview »Combobox valeur sélectionnée return DataRowView

Je ne sais pas pourquoi souvent sa valeur de retour sous forme de texte

Le code:

If ldstList.Tables(0).Rows.Count <> 0 Then 
         With CbStatus 
          .DataSource = ldstList.Tables(0) 
          .DisplayMember = "CardStatus" 
          .ValueMember = "StatusID" 
         End With 
        End If 

If Integer.Parse(CbStatus.SelectedValue) > 0 Then 
    GridLoad(Integer.Parse(CbStatus.SelectedValue)) 
End If 

Répondre

2

Je ne sais pas pourquoi la question se pose. Mais je l'ai trouvé une solution:

If Integer.Parse(DirectCast(CbStatus.SelectedItem, DataRowView).Item("StatusID")) > 0 Then 
    GridLoad(Integer.Parse(DirectCast(CbStatus.SelectedItem, DataRowView).Item("StatusID"))) 
End If 

Merci à tous ceux qui ont répondu, et s'il vous plaît faire si vous avez un poster une explication ou une meilleure solution.

2

Vous n'êtes pas contraignant Pour DataView, vous liez le DataTable lui-même. La DefaultView propriété retourne un DataView vous pouvez utiliser:

CbStatus.DataSource = ldstList.Tables(0).DefaultView 
1

Sur les propriétés Combobox ou déroulant aller à la DataBindings propriété ... sélectionnez avancée ... sélectionnez le texte ou la valeur sélectionnée ou selectedItem en fonction de la propriété que vous souhaitez définir, puis cliquez sur le liant dropdownlist En haut à droite du même écran, sélectionnez le nom de la colonne que vous souhaitez afficher et, après cela, sélectionnez le format des données sur la zone de liste format (numérique, monétaire, datetime, etc.) puis cliquez sur D'ACCORD. Cela suppose que vous avez défini votre valeur membre et membre affichage propriétés sur votre combobox ou menu déroulant et ceci suppose également que vous n'êtes pas liez via le code, mais par la propriété DataSource de votre commande (menu déroulant/combobox)

26

Indépendamment d'autres questions ou des solutions, s'il vous plaît assurez-vous de définir les propriétés de la zone de liste déroulante dans l'ordre:

.DisplayMember = ...; 
.ValueMember = ...; 
.DataSource = ....; // Notice how this one is last? 

Définition de la propriété DataSource premier va conduire à des problèmes de « system.data.datarowview ».

+0

Merci, vous venez d'enregistrer ma journée. Je n'ai jamais su que l'ordre importait tellement. – Bibhu

+2

J'ai eu ce problème, et j'ai trouvé que j'avais mis le 'DataSource' avant les deux autres dans quelques situations. Le réglage de 'DataSource' a été corrigé pour moi. –

+0

Bonne réponse ici. Droit sur l'argent. Je me débattais avec des combos qui fonctionnaient bien et d'autres qui ne le feraient pas, jusqu'à présent. J'ajouterais aussi que vous ne devriez pas attacher les gestionnaires d'événements ValueChanged avant qu'après tout cela, sinon il sera frappé quand vous définissez ValueMember, et la valeur sera nulle puisque vous n'avez pas encore défini DataSource. – AngCaruso

Questions connexes