HELP ME PLEASE............Probléme de CheckBox et Tableau Dynamique

sg_kan Messages postés 20 Date d'inscription mercredi 12 mai 2004 Statut Membre Dernière intervention 21 mai 2004 - 12 mai 2004 à 10:36
kenza_sana Messages postés 149 Date d'inscription mardi 14 octobre 2003 Statut Membre Dernière intervention 19 janvier 2009 - 22 mai 2004 à 15:46
Salut ....Help ME Please
Je suis dans la cata a cause des CHeckBox dynamique et des ButtonImage...
J'afffiche un tableau dynamique qui contient des ButtonImage et des checkbox (au fur et a mesure qu'il crée des lignes et des colonnes ) suite a une requete SQL
Mon probléme est que mon tableau est dynamique donc je leurs affecte comme ID le code de la photo a afficher mais je voudrait
selectionner les photos avec des checkbox et puis cliquer sur un boutton COMMANDE et les photos selectionner passeront a l'autre page et seront afficher
Merci de me répondre car je suis vraiment désespéré et je ne sait pas quoi faire........
Sincerement ca seras trés gentille J'utilise le asp.net et le c# mais si vous prograzmmez en VB.NET ce n'est pas grave je le comprned trés bien
Encore MERCI
Et please HHHHHHHHHHHHHHHEEEEEEEEEEELP ME

50 réponses

jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
12 mai 2004 à 16:55
Depuis le temps que tu poses la question je t'ai fait un truc qui ressemble à ce que tu veux, j'ai tout fait par le code donc il n'y a rien dans la partie html, il y a deux pages, la premiere ou tu selectionnes ce que tu veux, et la deuxieme qui s'appelle RecupCheckbox.aspx permet de voir ce que tu as selectionner

j'ai pas fait l'exemple à partir des images mais des noms de fichiers contenant un repertoire ... la transposition ne sera donc pas tres dur :)

donc voici le code, mais je le repete c'est pas du beau code, j'ai fait ca tres rapidement pour te depanner (- de 10min) donc j'ai pas cherché à faire de l'optimiser et à regarder la securité les bugs etc ... mais ca marche

Page.aspx


imports system.io

.
.
.

    Protected WithEvents Table1 As System.Web.UI.WebControls.Table

.
.
.

    Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        'Placez ici le code utilisateur pour initialiser la page

        Dim Row As New TableRow
        Dim i As Integer = 0

        Dim Cell As New TableCell

        For Each File As String In System.IO.Directory.GetFiles(Server.MapPath(""))

            Dim FI As New FileInfo(File)

            Cell = New TableCell

            Dim Check As New CheckBox
            Check.ID = "check" & FI.Name

            Cell.Controls.Add(Check)

            Dim Literal As New Literal
            Literal.Text = FI.Name

            Cell.Controls.Add(Literal)

            Row.Cells.Add(Cell)

            i += 1
            If i = 3 Then
                i = 0
                Table1.Rows.Add(Row)
                Row = New TableRow
            End If

        Next

        Row = New TableRow

        Dim LeBouton As New Button
        LeBouton.Text = "valider"

        'On lie le click du bouton à l'evenement on l'ajoute au placeholder
        AddHandler LeBouton.Click, AddressOf LeBouton_Click

        Cell = New TableCell

        cell.Controls.Add(LeBouton)
        Row.Cells.Add(cell)
        Table1.Rows.Add(Row)

        Table1.DataBind()
        Table1.Dispose()

    End Sub

    Private Sub LeBouton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
        Dim Coll As Collections.Specialized.NameValueCollection = Request.Form

        Dim Al As New ArrayList

        For Each c As String In Coll
            If Left(c, 5) = "check" Then
                Response.Write(c & "
")
                Al.Add(c)
            End If
        Next

        Session("CheckBox") = Al
        Response.Redirect("RecupCheckbox.aspx")

    End Sub



RecupCheckbox.aspx

    Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        'Placez ici le code utilisateur pour initialiser la page
        Dim Al As ArrayList = Session("CheckBox")
        Response.Write("Vous avez cocher : 
")

        For Each s As String In Al
            Response.Write("<li>" & s & " </li>")
        Next

        Response.Write("")

    End Sub



Dans page.aspx tu dois avoir

c'est tout

le code n'est pas commenté, mais c'est en fait une synthese de tout ce que j'ai essayé de t'expliquer jusqu'a present ...

J'ai pas trop le temps cette semaine (concours d'ecole d'ingé samedi) donc je pourrais pas repondre aux questions mais des que j'ai le temps (samedi soir ? :big) ) j'essaierais de faire qqchose d'un peu plus complet et d'un peu plus securisé etc... mais seulement si tu n'arrives pas à comprendre, et bien sur seulement si tu as essayé de comprendre :-p

@+

Cyril
0
kenza_sana Messages postés 149 Date d'inscription mardi 14 octobre 2003 Statut Membre Dernière intervention 19 janvier 2009
13 mai 2004 à 08:41
Merci pour votre réponse mais je croit que ce n'est pas ce que je demande...
Moi je veut passé d'une page a une autre la liste des chechbox coché alors que icic vous passez d'aprés ce que j'ai compris la liste de tout les checkbox puisque il y'a pas de vérification(c.checked)
S'il vous plait répondez moi je susi vraiment dans une vraie cata je ne sait plus quoi faire
PLEEEEEEASE votre aide me sauveras vraiment
MERCI et j'attend impatiement votre réponse
Encore 10 minutes et tu pourras me sauvé..... :big)
0
kenza_sana Messages postés 149 Date d'inscription mardi 14 octobre 2003 Statut Membre Dernière intervention 19 janvier 2009
13 mai 2004 à 08:43
Encore merci et PLAESE HELP ME
Tout mon travail est en attente la ca fait 3 semaines je n'arrive pas a trouvé la réponse :sad) , :( , :question)
MERCI D AVANCE
0
sg_kan Messages postés 20 Date d'inscription mercredi 12 mai 2004 Statut Membre Dernière intervention 21 mai 2004
13 mai 2004 à 09:33
J'ai peur que je n'étais pas encore assez clair
Donc je m'explique de nouveau:
Ce que je veut pour vous faciliter la tache laissse tomber l'hisoitre d'image
Ce que je veut c'est la création d'un tableau dynamqiue qui contient des chechbox (donc on va normalement affecter comme ID a ces checkbox leurs numéro si c'est la premier c'est 1 , le deuxieme c'est 2....)
Mais l'important est que le tableau soit dynamique(vous pouvez faciliter la tache par exemple en insérant le nombre de ligne et de colonnes dans des zones de textes et puis les récupérer pour créer votre tableau )

Bref pour le boutton un seul boutton qui n'appartient pas au tableau
De facon a ce que je selectionne tant de checkbox que je veut puis je clique sur le boutton (1 seul) la liste de checkbox selectionner seras passer en argument je voudrait juste passer la liste de leurs ID donc normalement j'aurait besoin d'un tableau de string qui contientdrait les ID des checkbox cochés..
Merci et j'espere que j'étais plus claires la
Mon probléme est comment récupérer cette liste de chechbox dans ce tableau (qui est dynamique )coché et comment la passer a la page suivante
Vous connaissant j'éspére que ca vous prendras 8 minutes
C'est urgent PLEASE et MMMMMMMERCI
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
13 mai 2004 à 10:52
as tu testé la source ? certes je l'ai pas commenté, et ca pourrait ne pas paraitre tres clair, mais c'est exactement ce que la source fait :p

qd je fais ca:
Dim Coll As Collections.Specialized.NameValueCollection = Request.Form

Dim Al As New ArrayList

For Each c As String In Coll
If Left(c, 5) = "check" Then
Response.Write(c & "
")
Al.Add(c)
End If
Next

Ca me recupere seulement les cheked
j'ai rajouté If Left(c, 5) = "check" Then car il n'y a pas que des checkbox donc il faut verifier que c'est un checkbox
mais ca marche,
ca me fait renvoie tout les fichiers que j'ai dans le repertoire, puis je selectionne je clique sur le bouton et il me donne la liste de seulement les elements qui sont checked

dans ta directive <%@ Page rajoute trace="true" tu rajoutes des textbox, et tu verras que si tu fais un postback dans il va t'indiquer dans le request.form seulement les checkbox checked et ils auront la valeur On

donc me code marche, essaye de le faire fonctionner

dsl de ne pas avoir plus de temps, et de ne pas avoir commenté mon code

@+

Cyril
0
kenza_sana Messages postés 149 Date d'inscription mardi 14 octobre 2003 Statut Membre Dernière intervention 19 janvier 2009
13 mai 2004 à 18:02
Merci pour votre réponse j'ai testé la source et ca marche bien car apparement le probléme est dna sle passage du ARRAYLIST du premier fichier au dexieme car je n'ai pas utiliser de session j'ai voulut fair eun passage mais ca n'a pas marché ...Quand j'ai testé le code et que j'affiche le résultat dans la meme page ca marche bien *car avec les sessions il m'affiche des erreurs est ce que je ne pourrait pas apsser le tableau sans session comme on le fait pour les variable
Response.Redirect("Form2.aspx?x="+Valaur);
Si c'est popssible dit le moi car ca me coince encore Merci ne vopus enfaite pas juste le code pour l'explication je me casse la tete et je trouve ...Vous n'allez pas tout faire a ma place quand meme :big)
Encore merci et j'attend impatiement votre réponse
0
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
13 mai 2004 à 18:21
si c'est possible mais pourkoi ne pas utiliser les sessions ? imagines que tu as 50 images de checked ...

le code est tres simple donc je suis courageux :)

dim querystring as string
for each s as string in Al
querystring & = s
next

Response.Redirect("RecupCheckbox.aspx?valeur=" & querystring )

voila

@+

Cyril
0
kenza_sana Messages postés 149 Date d'inscription mardi 14 octobre 2003 Statut Membre Dernière intervention 19 janvier 2009
13 mai 2004 à 20:10
Je vient de voire votre code MERCI mais je voudrait avoir votre avis c'est mieux de travaillé avec les sessions pour passer la liste ou avec le 2 eme méthode parceque le checkbox ca rend le serveur lent déja alors que la 2 eme méthode comme vous l'avez dit une liste de 50 check seras trés longue
Alors vous me conseillé d'utilisé quel méthode a votre avis?????
MERCI
0
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
13 mai 2004 à 20:40
tout depend du nb de checkbox ... si il y en a pas par querystring sinon par les sessions, mais avec les querystring l'utilisateur peut changer les valeurs donc il faut avoir une gestion d'erreur et d'exception ...
par contre qd tu dis que le serveur est lent avec des checkbox ????? c'est qu'il doit y avoir un pb sur le serveur ou alors tu as un minuscule serveur.
C'est vrai que dans mon exemple je demande pas mal de chose : je lui demande de faire un listing de tous les fichiers ensuite je le convertis en FileInfo etc... c'est vrai que c'est tres lourd mais comme je te l'ai dit j'ai pas cherché à avoir du code optimisé ...
j'ai fait ca comme ca pour pas compliqué avec d'autres trucs.

mais je te conseil de faire, au lieu de lister les images de ton repertoire tu mets dans ton repertoire un fichier xml qui contient les noms, l'auteur une description etc ...

sinon qd tu fais par le querystring, tu utiliseras peut de memoire su ton serveur mais en revanche beaucoup de puissance de calcul car tu fais une boucle sur l'arraylist et un split ...
alors que les sessions ne demandent pas beaucoup de puissance mais un peu plus de memoire ...

pour les querystring au lieu de la boucle tu peux faire je crois
Query = Al.ToArray.Join(";")
je sais pas si c'est plus optimisé que la boucle car en interne il doivent faire une boucle ...

@+

Cyril
0
kenza_sana Messages postés 149 Date d'inscription mardi 14 octobre 2003 Statut Membre Dernière intervention 19 janvier 2009
15 mai 2004 à 06:29
Merci c'est vraiment gentille de me répondre malgré que vous ete occupé :big)
Je vous souhaite vraiment bone chance POUR VOTRE CONCOURS d'ajourd'hui vous le méritez bien
0
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
15 mai 2004 à 17:55
merci, le concours est fini, il reste plus qu'a attendre les resultats on verra bien ... mais normalement c'est pas trop mal :)

sinon es tu arrivé à faire ce que tu voulais ?

@+

Cyril
0
kenza_sana Messages postés 149 Date d'inscription mardi 14 octobre 2003 Statut Membre Dernière intervention 19 janvier 2009
15 mai 2004 à 20:03
Oui c'est Bon c'est réglé et c'est grace a vous sincérement je vous suis trés reconnaissante mais j'en ait pelisne de problémes que j'ai résolu mais y'en a un qui m'a dit NON
a mon avis doit etre résolut par le meme pricipe mais depuis hier je cherche et je ne trouve rien ...C'est la Cata je me casse la tete sans cesse voila ce que je veut et Please Répondez moi si c'est possible car je n'ai rien trouvé :

J'ai plusieurs cellules qui comporte des dropdownlist
Soit par exemple chaque ligne de mon tableau dynamqiue comporte 4 cellule et chaque cellule comporte un dropdownlist .
Le dropdownList de la premiere cellule s'appel dr1 et il comporte le resultat d'une requete imaginons pas exemple qu'il va m'afficher de selectionner les choix suivants:Pantallons,Robes,Pull...
Alors ce que je veut est que le dexieme DropDownlist (celui de la meme ligne mais la 2 eme colonne) m'affiche les couleurs disponibles
Pour les pantalons ca seras:Rouge, Blueu
Pour les Robes ca seras:Noire,Blanc,Rouge...
Donc que le deuxieme capte ce que j'ai selectionner pour le premier
C'est vraiment difficile car c'est dynamique en plus je doit récupére la valeur selectionner a partir de laquelle je pourrait remplir la suite des DropDownList
Aprés a la fin j'ain un boutton qui deverait faire le parcour du tableau et selectionner ligne par ligne (toute les valeurs selectionner dnas les différents DropDownlist )
Vous savez c'est le princip)e pour passer plusieurs commande ...
Je dispose de plusieur ligne et je choisit ce que je veut a l'aide des DropDownlist puis je clique sur un boutton (qui n'appartient pas au tableau) et la je récupére pour insérer les nouvelles commande
Merci de me répondre j'espére que j'étais assez clair et encore Merci
Mais je pense le probléme est le meme
Encore MERCI HHHEEELP PLEeese
J'éspére que je ne vosu dérange pas trop c'est que en ASP.NET et c# les problémes sont nombreux en plsu c'est mon premier projet donc je rencontre pleisnd e difficultés y'en a que je peut résoudre moi meme ou en utilisant le MSDN ou bien sure votre site
Donc désolé si je vous dérange trop
MAIS PLEEEEEEEEESE HELP ME c'est vraimenr urgent et malgré tot ce que je fait je sui en retard
0
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
15 mai 2004 à 20:29
J'ai pas tout à fait compris le problème

Si je resume : tu veux qu'un drop réagisse en fonction d'un autre ?

pour ca on est obligé de faire un postback de la page donc dans le drop tu rajoutes autopostback=true ce qui va faire en sorte qu'a cq fois que le drop va changer de valeur cela va recharger la page il y a maintenant deux possibilités : soit se servir de l'evenement SelectedIndexChanged du drop soit directement le recuperer dans le page load, je vais te montrer la deuxieme méthode qui me parait un peu moins complexe

donc le page load c'est ca :
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

tu as deux paramètres et c'est ceux la qu'on va exploiter, et plus precisement le paramètre sender

donc en gros le code ressemblerais à ca

sub pageLoad(sender as ...)

if page.ispotback sender.gettype.isequal(dropdownlist) then

try

dim drop as dropdownlist

drop = ctype(sender, dropdownlist)

' et la tu pourras recuperer ton drop

catch

end try

end if

end sub

J'ai pas VS.net d'ouvert donc d'une il se peut qu'il y ai des erreurs mais je te montre juste le chemin, j'ai pas continuer la suite du code car sans intelisens j'ai du mal :) mais je pense que tu pourras te debrouiller à partir de la, sinon dis le moi.

finalement je sais pas si c'est methode est plus simple que l'autre :p mais dans l'autre methode il y a un truc chiant à trduire en C# c'est un truc du style : AddHandler MonTextBox.TextChanged, AddressOf MonTextBox_TextChanged --> http://www.aspfr.com/code.aspx?ID=21286 (exemple d'utilisation la bas)

bon courage

@+

PS: tu as le droit de me tutoyer (moi je le fait bien ;))
Cyril
0
kenza_sana Messages postés 149 Date d'inscription mardi 14 octobre 2003 Statut Membre Dernière intervention 19 janvier 2009
16 mai 2004 à 11:27
Bonjour encore Merci pour ta réponse mais ca ne marche pas quand je met la conditions :
if((Page.IsPostBack)&(sender.GetType().Equals(DropDownList)))
déja le compilateur ne l'accepete pas j'ai comme message d'erreur :

("'System.Web.UI.WebControls.DropDownList' désigne 'classe' où 'variable' était attendu")
Mais essayé de réglé ceci en remplacant la condition par :
if((Page.IsPostBack)&(sender.GetType().Equals((object)drSupp)))

avec drSupp le nom du DropDownList qui a déclenché le chargement de la page (et sincerement je trouve que ca convient mieux car j'aurait plusieurs DropDownList donc la c'est plus précis puisqu'on traite selon l'élément qui a déclenché le retour )
Ca n'affiche aucune erreur mais pour l'éxécuté il n'entre meme pas dans cette condition comme si c'est faux pour lui .
Pour le principe je vait essayer d'éclairssir un peut plus dans mon tableau dynamqiue chaque lignes comporte je croit 5 dropDownList(chaqu'un dna sune colonne ) .
Au chargement de la page c'est juste le premier DropDownList qui seras remplit (les autres vides ) et dés que je choisit un trucs dans le premier le deuxiéme seras remplit en foncitons de ce que j'ai remplit dans le premier DropDownList .
Donc je doit récupérer pour chaque ligne la valeur selectionner dans le premier DropDownList pour l'utiliser dans le 2éme et ainsi de suite )
Merci de me répondre et si ce n'est pas trop clair dite le moi
PLEASE J'éspére que tu vas trouvé la solution si c'est possible
MERCI

NB:Encore Merci et me voila qui suit ton conseille et je te dit (tu) au lieu de (vous) mais c'est difficile j'avait déja pris l'habitude
0
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
16 mai 2004 à 11:36
essaye tout simplement comme ca :

if page.ispotback then

try

dim drop as dropdownlist

drop = ctype(sender, dropdownlist)

' et la tu pourras recuperer ton drop

catch

end try

end if

car en regardant le bout de code je me suis apercu qu'on avait pas besoin de faire une condition sur le sender si ce n'est pas un drop, le bloc try recuperera l'erreur ...

si ca marche tj pas je ferais un petit bout de code fonctionel cet apres midi :)

@+

Cyril
0
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
16 mai 2004 à 13:45
normal que j'ai eu une reponse vide ? :p
ca veut dire que ca marche lol ?

;)

@+

Cyril
0
kenza_sana Messages postés 149 Date d'inscription mardi 14 octobre 2003 Statut Membre Dernière intervention 19 janvier 2009
16 mai 2004 à 13:50
Merci pour votre réponse mais la je susi encore en train d'essayé car je n'arrive pas a trouvé le cast en c# qui remplace CType j'ai beau cherché mais ca ne marche pas
D'habitude je met :
drop = (DropDonwList)(sender);
et ca marche la ca ne veut pas marché
Donc je susi en train d'assayé si tu connait dit le moi je sait que tu utilise plutot le VB mais je ne trouve pas cette instruction meme en MSDN
Bon merci pour ta réponse et j'éspére que moi ou toi on va la trouvé cette instruction
0
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
16 mai 2004 à 14:18
oui je crois que la syntaxe est bonne mais si ce que tu fais ne marche pas c'est que sender ne semble pas etre un dropdonwlist je regarde le code tout à l'heure, et voir ce que je peux faire en vb :)

@+

Cyril
0
kenza_sana Messages postés 149 Date d'inscription mardi 14 octobre 2003 Statut Membre Dernière intervention 19 janvier 2009
16 mai 2004 à 15:08
Merci de me répondre si tu veut que je t'envoie ce que je met dans page (Page_Load) dit le moi
Si ce n'est pas trop long pour toi
Je l'envoie ca te permet de mieux peut etre comprendre le principe c'est en c# mais ne t'inquiete pas tu le comprendras car c'est a 97% le meme syntaxe avec le VB
Merci et j'attendrait ta réponse Bye
0
kenza_sana Messages postés 149 Date d'inscription mardi 14 octobre 2003 Statut Membre Dernière intervention 19 janvier 2009
16 mai 2004 à 16:12
Je vient de faire quelque test et il s'est avéré que le probléme comme vous l'avez dit est aussi au niveau de sender car il m'envoie la page
J'ai mit:
l.Text=sender.GetType().ToString();
pour récupérer le nom du type de l'objet sender est il m'affiche alors :ASP.Commande_aspx (le nom de ma Page ASP)
Alors que je doti avoir :
System.Web.UI.WebControls.DropDownList

Alors je ne comprend pas d'ou vient le probléme PLEASE HELP ME je suis vraiment dna sla cata je n'arrive pas a m'ne sortir alors que je doit le faire et trés vite
Encore MERCI je ne sait pas vraiment ce que je ferait sans vous
0
Rejoignez-nous