OVH Cloud OVH Cloud

DataSet et ComboBox

4 réponses
Avatar
Mikado
Salut à tous,

Depuis un DataSet je remplie un ComboBox avec les propriétés ValueMember et
TextMember. J'ai besoin d'ajouter une sélection du type "Aucune valeur" qui
mettrait la valeur du champ à NULL. J'ai essayer d'ajouter un item à la
collection items juste après le fill mais dés que je sélectionner l'item
ajouter j'obtiens un erreur.

Comment faut il gérer ça ?

Merci

Jérôme

4 réponses

Avatar
Zoury
Salut Mikado ! :O)

Essai ceci :
'***
' on assume que dt est un
' DataTable contenant les données
'
' on créer un enregistrement bidon dans la table
' et on l'insère au début. Note que tu peux assigner
' la valeur qui te plaît à l'enregistrement (Nothing, -1, 0, etc.)
' aussi, l'ordre et le type des valeurs pour la création de la DataRow
' doit respecter l'ordre des colonnes dans la DataTable
Dim dr As DataRow = dt.NewRow()
dr.ItemArray = New Object() {"Aucune valeur", Nothing}
dt.Rows.InsertAt(dr, 0)

' on lie notre DataTable à combo box
ComboBox1.DataSource = dt
ComboBox1.DisplayMember = "nom de la colonne contenant le texte"
ComboBox1.ValueMember = "nom de la colonne contenant les valeurs"
'***

--
Cordialement
Yanick
MVP pour Visual Basic
"Mikado" a écrit dans le message de
news:
Salut à tous,

Depuis un DataSet je remplie un ComboBox avec les propriétés ValueMember


et
TextMember. J'ai besoin d'ajouter une sélection du type "Aucune valeur"


qui
mettrait la valeur du champ à NULL. J'ai essayer d'ajouter un item à la
collection items juste après le fill mais dés que je sélectionner l'item
ajouter j'obtiens un erreur.

Comment faut il gérer ça ?

Merci

Jérôme




Avatar
Jérôme Quintard
Non malheureusement ça ne fonctionne pas... j'obtiens une erreur...

Mika
Avatar
Zoury
Salut Jérôme ! :O)

Peux-tu nous dire quelle est l'erreur obtenue et nous montrer ton code svp ?

Je viens de refaire le test et ça fonctionne :
'***
Dim cmd As OracleCommand
Dim da As OracleDataAdapter
Dim ds As DataSet
Dim dt As DataTable
Dim dr As DataRow

cmd = New OracleCommand
cmd.CommandType = CommandType.Text
cmd.CommandText = "select nvl(p.nom, '') || ', ' || nvl(p.prenom,
'') nom, p.id id from personne p"

cmd.Connection = New OracleConnection("Password=mon_password;User
ID=mon_user;Data Source=ma_bd;Persist Security Info=True")
cmd.Connection.Open()
da = New OracleDataAdapter(cmd)
ds = New DataSet
da.Fill(ds)
cmd.Connection.Close()

dt = ds.Tables(0)
dr = dt.NewRow()
dr.ItemArray = New Object() {"Aucune valeur", -1}
dt.Rows.InsertAt(dr, 0)

ComboBox1.DataSource = dt
ComboBox1.DisplayMember = dt.Columns(0).ColumnName
ComboBox1.ValueMember = dt.Columns(1).ColumnName
'***

--
Cordialement
Yanick
MVP pour Visual Basic
"Jérôme Quintard" a écrit dans
le message de news:
Non malheureusement ça ne fonctionne pas... j'obtiens une erreur...

Mika




Avatar
Mikado
Si c'est bon ça fonctionne... enfait fo binder l'object via le code et non
par l'ide...