Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Dropdownlist dynamique

4 réponses
Avatar
cougnews
bonjour à tous

J'ai un soucis en asp.net (vb). Je dois afficher afin de faire des
mises à jour des lignes dont je ne connais pas le nombre.
Ces lignes sont sous la forme : dropdownlist dropdownlist textbox
textbox
Le nombre de ligne dépend du nombre de datarows dans un dataset
comment creer ces "lignes" et surtout comment acceder aux données pour
mettre à jour une table ?
J'arrive à créer ces ddl à la volée mais après je ne sais pas comment
y acceder, gérer le selecteditem, gérer la mise à jour

4 réponses

Avatar
Rédo - MVP ASP.NET
Salut JD,

En fait tu peux travailler sur ton ddl en tant qu'objet. Ainsi tu peux
récupérer ton ddl via : page.FindControl("iddetoncontrol") :) et tu le Cast
(CType) afin de préciser que l'objet que tu as récup est un ddl et ainsi tu
peux passer sur ses propriétés.

Une première piste ;)

bon coding.

Rédo

"JD Sivignon" a écrit :

bonjour à tous

J'ai un soucis en asp.net (vb). Je dois afficher afin de faire des
mises à jour des lignes dont je ne connais pas le nombre.
Ces lignes sont sous la forme : dropdownlist dropdownlist textbox
textbox
Le nombre de ligne dépend du nombre de datarows dans un dataset
comment creer ces "lignes" et surtout comment acceder aux données pour
mettre à jour une table ?
J'arrive à créer ces ddl à la volée mais après je ne sais pas comment
y acceder, gérer le selecteditem, gérer la mise à jour



Avatar
Pascal Mercier
Bonjour,

Une solution pourrait être de :
1. Récupérer le dataset et lire le nombre de rows dans la datatable
2. Créer un tableau de dropdownlist du nombre de rows
3. Insérer les dropdownlist dans la page en les paramétrant comme il faut
(définir l'ID, les peupler, définir la valeur par défaut,...)
A partir de là, il y a plusieurs façon de faire : soit vous souhaitez un
Post de la page lorsqu'on sélectionne un élément dans une des dropdownlist,
soit vous souhaitez faire les sélections dans les dropdown et validez
globalement la page par un bouton de formulaire.
Dans le premier cas, il faut alors mettre un tag à la création sur les
dropdown permettant de le numéroter (drop1, drop2, etc). Ensuite, il faut
brancher un événement (SelectedIndexChanged) de chaque dropdownlist sur une
même méthode handler. L'ensemble de ce montage fait que lorsqu'il y aura un
click sur une dropdownlist on appellera la méthode handler et il sera
possible de savoir par l'argument sender + le numéro de dropdown sur quel
dropdown on aura cliqué en allant la chercher dans le tableau.
Dans le deuxième cas, il suffit sur l'événement click du bouton de
formulaire parcourir le tableau de dropdown et de traiter les selecteditem
de chaque liste. Naturellement, cette dernière solution est la plus simple à
mettre en oeuvre.

Cordialement,
Pascal Mercier
Microsoft France - MCS

"Rédo - MVP ASP.NET" wrote in
message news:
Salut JD,

En fait tu peux travailler sur ton ddl en tant qu'objet. Ainsi tu peux
récupérer ton ddl via : page.FindControl("iddetoncontrol") :) et tu le


Cast
(CType) afin de préciser que l'objet que tu as récup est un ddl et ainsi


tu
peux passer sur ses propriétés.

Une première piste ;)

bon coding.

Rédo

"JD Sivignon" a écrit :

> bonjour à tous
>
> J'ai un soucis en asp.net (vb). Je dois afficher afin de faire des
> mises à jour des lignes dont je ne connais pas le nombre.
> Ces lignes sont sous la forme : dropdownlist dropdownlist textbox
> textbox
> Le nombre de ligne dépend du nombre de datarows dans un dataset
> comment creer ces "lignes" et surtout comment acceder aux données pour
> mettre à jour une table ?
> J'arrive à créer ces ddl à la volée mais après je ne sais pas comment
> y acceder, gérer le selecteditem, gérer la mise à jour
>


Avatar
cougnews
J'ai essayer de suivre ta piste mais je bloque
Je fais ça :
Dim dArray(myDs.Tables("LstEquipes").Rows.Count) As DropDownList
For i = 1 To myDs.Tables("LstEquipes").Rows.Count
dArray(i).ID = "ddlequipe" & i
dArray(i).Font.Name = "verdana"
dArray(i).Font.Size = FontUnit.Parse("10px")
dArray(i).DataTextField = "Equ_Nom"
dArray(i).DataValueField = "Equ_ID"
dArray(i).DataSource = myDs.Tables("LstEquipes")
dArray(i).DataBind()
Panel1.Controls.Add(dArray(i))
Next

Mais il me mets un message d'erreur dès l'affectation de l'ID :
System.NullReferenceException: Object reference not set to an instance
of an object. at Stats.adm_resmaj.Page_Load(Object sender, EventArgs
e) in

Je ne vois pas la solution... Est ce que je déclare mal ? Est ce qu'il
manque quelque chose ???

"Pascal Mercier" wrote in message news:...
Bonjour,

Une solution pourrait être de :
1. Récupérer le dataset et lire le nombre de rows dans la datatable
2. Créer un tableau de dropdownlist du nombre de rows
3. Insérer les dropdownlist dans la page en les paramétrant comme il faut
(définir l'ID, les peupler, définir la valeur par défaut,...)
A partir de là, il y a plusieurs façon de faire : soit vous souhaitez un
Post de la page lorsqu'on sélectionne un élément dans une des dropdownlist,
soit vous souhaitez faire les sélections dans les dropdown et validez
globalement la page par un bouton de formulaire.
Dans le premier cas, il faut alors mettre un tag à la création sur les
dropdown permettant de le numéroter (drop1, drop2, etc). Ensuite, il faut
brancher un événement (SelectedIndexChanged) de chaque dropdownlist sur une
même méthode handler. L'ensemble de ce montage fait que lorsqu'il y aura un
click sur une dropdownlist on appellera la méthode handler et il sera
possible de savoir par l'argument sender + le numéro de dropdown sur quel
dropdown on aura cliqué en allant la chercher dans le tableau.
Dans le deuxième cas, il suffit sur l'événement click du bouton de
formulaire parcourir le tableau de dropdown et de traiter les selecteditem
de chaque liste. Naturellement, cette dernière solution est la plus simple à
mettre en oeuvre.

Cordialement,
Pascal Mercier
Microsoft France - MCS

"Rédo - MVP ASP.NET" wrote in
message news:
> Salut JD,
>
> En fait tu peux travailler sur ton ddl en tant qu'objet. Ainsi tu peux
> récupérer ton ddl via : page.FindControl("iddetoncontrol") :) et tu le
Cast
> (CType) afin de préciser que l'objet que tu as récup est un ddl et ainsi
tu
> peux passer sur ses propriétés.
>
> Une première piste ;)
>
> bon coding.
>
> Rédo
>
> "JD Sivignon" a écrit :
>
> > bonjour à tous
> >
> > J'ai un soucis en asp.net (vb). Je dois afficher afin de faire des
> > mises à jour des lignes dont je ne connais pas le nombre.
> > Ces lignes sont sous la forme : dropdownlist dropdownlist textbox
> > textbox
> > Le nombre de ligne dépend du nombre de datarows dans un dataset
> > comment creer ces "lignes" et surtout comment acceder aux données pour
> > mettre à jour une table ?
> > J'arrive à créer ces ddl à la volée mais après je ne sais pas comment
> > y acceder, gérer le selecteditem, gérer la mise à jour
> >


Avatar
cougnews
Bon si ça intéresse quelqu'un voila la réponse, il fallait juste
ajouter dArray(i) = New DropDownList


Dim dArray(myDs.Tables("LstEquipes").Rows.Count) As
DropDownList
For i = 1 To myDs.Tables("LstEquipes").Rows.Count
dArray(i) = New DropDownList
dArray(i).ID = "ddlequipe" & i
dArray(i).Font.Name = "verdana"
dArray(i).Font.Size = FontUnit.Parse("10px")
dArray(i).DataTextField = "Equ_Nom"
dArray(i).DataValueField = "Equ_ID"
dArray(i).DataSource = myDs.Tables("LstEquipes")
dArray(i).DataBind()
Panel1.Controls.Add(dArray(i))
Next

(JD Sivignon) wrote in message news:...
J'ai essayer de suivre ta piste mais je bloque
Je fais ça :
Dim dArray(myDs.Tables("LstEquipes").Rows.Count) As DropDownList
For i = 1 To myDs.Tables("LstEquipes").Rows.Count
dArray(i).ID = "ddlequipe" & i
dArray(i).Font.Name = "verdana"
dArray(i).Font.Size = FontUnit.Parse("10px")
dArray(i).DataTextField = "Equ_Nom"
dArray(i).DataValueField = "Equ_ID"
dArray(i).DataSource = myDs.Tables("LstEquipes")
dArray(i).DataBind()
Panel1.Controls.Add(dArray(i))
Next

Mais il me mets un message d'erreur dès l'affectation de l'ID :
System.NullReferenceException: Object reference not set to an instance
of an object. at Stats.adm_resmaj.Page_Load(Object sender, EventArgs
e) in

Je ne vois pas la solution... Est ce que je déclare mal ? Est ce qu'il
manque quelque chose ???

"Pascal Mercier" wrote in message news:...
> Bonjour,
>
> Une solution pourrait être de :
> 1. Récupérer le dataset et lire le nombre de rows dans la datatable
> 2. Créer un tableau de dropdownlist du nombre de rows
> 3. Insérer les dropdownlist dans la page en les paramétrant comme il faut
> (définir l'ID, les peupler, définir la valeur par défaut,...)
> A partir de là, il y a plusieurs façon de faire : soit vous souhaitez un
> Post de la page lorsqu'on sélectionne un élément dans une des dropdownlist,
> soit vous souhaitez faire les sélections dans les dropdown et validez
> globalement la page par un bouton de formulaire.
> Dans le premier cas, il faut alors mettre un tag à la création sur les
> dropdown permettant de le numéroter (drop1, drop2, etc). Ensuite, il faut
> brancher un événement (SelectedIndexChanged) de chaque dropdownlist sur une
> même méthode handler. L'ensemble de ce montage fait que lorsqu'il y aura un
> click sur une dropdownlist on appellera la méthode handler et il sera
> possible de savoir par l'argument sender + le numéro de dropdown sur quel
> dropdown on aura cliqué en allant la chercher dans le tableau.
> Dans le deuxième cas, il suffit sur l'événement click du bouton de
> formulaire parcourir le tableau de dropdown et de traiter les selecteditem
> de chaque liste. Naturellement, cette dernière solution est la plus simple à
> mettre en oeuvre.
>
> Cordialement,
> Pascal Mercier
> Microsoft France - MCS
>
> "Rédo - MVP ASP.NET" wrote in
> message news:
> > Salut JD,
> >
> > En fait tu peux travailler sur ton ddl en tant qu'objet. Ainsi tu peux
> > récupérer ton ddl via : page.FindControl("iddetoncontrol") :) et tu le
Cast
> > (CType) afin de préciser que l'objet que tu as récup est un ddl et ainsi
tu
> > peux passer sur ses propriétés.
> >
> > Une première piste ;)
> >
> > bon coding.
> >
> > Rédo
> >
> > "JD Sivignon" a écrit :
> >
> > > bonjour à tous
> > >
> > > J'ai un soucis en asp.net (vb). Je dois afficher afin de faire des
> > > mises à jour des lignes dont je ne connais pas le nombre.
> > > Ces lignes sont sous la forme : dropdownlist dropdownlist textbox
> > > textbox
> > > Le nombre de ligne dépend du nombre de datarows dans un dataset
> > > comment creer ces "lignes" et surtout comment acceder aux données pour
> > > mettre à jour une table ?
> > > J'arrive à créer ces ddl à la volée mais après je ne sais pas comment
> > > y acceder, gérer le selecteditem, gérer la mise à jour
> > >