Probleme de controle d'une checkbox créer dynamiquement [Résolu]

Messages postés
34
Date d'inscription
mardi 3 février 2009
Dernière intervention
15 décembre 2011
- 19 févr. 2010 à 10:46 - Dernière réponse :
Messages postés
6069
Date d'inscription
dimanche 13 avril 2003
Dernière intervention
15 juillet 2011
- 6 mai 2010 à 23:14
Salut à tous,

ca fait 2 jours que je chercher a trouver les controles "checkbox" dans ma page, enfin j'y arrive.

Maintenant mon problème est que lorsque je tombe dessus ils ne sont jamais checked!!

donc fin.....

si vous pouviez m'expliquer quelle erreur j'ai pue commettre se serai le pied!!!

voila comment je crée ma checkbox dans un panel:
      //Checkbox
                check = new CheckBox();
                check.ID = "check" + item.IMG_ID.ToString();
                check.Text = " A supprimé
";

                //Panel
                pan1 = new Panel();
                pan1.ID = "pan" + i;
                pan1.Width = 180;
                pan1.Style.Add("float", "left");
                pan1.Controls.Add(check);
                pan1.Controls.Add(Img);[code=cs]


voila maintenant comment je la récupère :

public static string Checkbox_verif(Control c)
    {
        string checkid = null;
         if (c != null)
        {
            foreach (Control item in pan1.Parent.Controls)
            {
                if (item.Controls.Count > 0)
                {
                    if (item is Panel)
                    {
                        foreach (Control item1 in item.Controls)
                        {
                            if (item1 is CheckBox)
                            {
                                if ((item1 as CheckBox).Checked)
                                {//ICI c'est tjrs False!!!
                                        checkid += (item1.ID+"/");
                                }
                            }
                        }
                    } 
                }
            }
        }
         if (checkid != null)
             return checkid;
         else
             return null;
    }


mais (item1 as checkbox).checked = toujours toujours toujours false!!!

Please help me!!
Afficher la suite 

Votre réponse

14 réponses

Meilleure réponse
Messages postés
6069
Date d'inscription
dimanche 13 avril 2003
Dernière intervention
15 juillet 2011
- 23 févr. 2010 à 19:15
3
Merci
Ok,

C'est bien ce que je pense tu ne sais pas utiliser asp.net
Voici un exemple que je viens de faire bon dev

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;

namespace WebApplication1
{
    public class Livre
    {
        public Livre(bool isDotnet, string name)
        {
            this.isDotnet =  isDotnet;
            this.name = name;
        }
        public bool isDotnet { get; set; }
        public string name { get; set; }
    }

    public partial class _Default : System.Web.UI.Page
    {
        private List<Livre> bibliotheque = new List<Livre>();
        protected void Page_Load(object sender, EventArgs e)
        {
            Label1.Text = " Livres sélectionnés : 
";
     
            if (!IsPostBack) 
            {        
                LoadData();
            }
           
        }
        public void LoadData() {
            bibliotheque.Add(new Livre(true, @"c# par la pratique"));
            bibliotheque.Add(new Livre(false, @"Linux for dummies"));
            Repeater1.DataSource  = from l in bibliotheque
                                   select l;
            Repeater1.DataBind();
        }

        public void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e) 
        {
            if (e.Item.ItemType ListItemType.Item || e.Item.ItemType ListItemType.AlternatingItem)
            {
                Livre livre = (Livre) e.Item.DataItem ;
                CheckBox chkIsDotnet = e.Item.FindControl("chkIsDotnet") as CheckBox;
                chkIsDotnet.Checked = livre.isDotnet;
                TextBox txtName = e.Item.FindControl("txtName") as TextBox;
                txtName.Text = livre.name;
            }
        }

        protected void Button1_Click(object sender, EventArgs e)
        {
            
            foreach (RepeaterItem item in Repeater1.Items)
            {
                if ((item.FindControl("chkIsDotnet")as CheckBox).Checked)
                {
                    Label1.Text = String.Concat(Label1.Text,(item.FindControl("txtName") as TextBox).Text, "
");
                }     
           }
        }
    }   
}



<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="WebApplication1._Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title></title>
</head>

    <form id="form1" runat="server">
    

        
            
                
                 

            
        
    

    
    
        
    


    </form>

</html>

Merci nhervagault 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 90 internautes ce mois-ci

Commenter la réponse de nhervagault
Messages postés
6069
Date d'inscription
dimanche 13 avril 2003
Dernière intervention
15 juillet 2011
- 19 févr. 2010 à 14:02
0
Merci
Salut,

Quand sont crée les checkbox et quand est exécuté le code Checkbox_verif
Commenter la réponse de nhervagault
Messages postés
34
Date d'inscription
mardi 3 février 2009
Dernière intervention
15 décembre 2011
- 19 févr. 2010 à 22:25
0
Merci
Salut,

Alors je crée dynamiquement les checkbox sur une requête sql qui ressort des photos dans un panel et j'y ajoute une checkbox pour pouvoir vérifier si après un 'click_button' les photos sont sélectionnées ou pas.

Tous ça pour récupérer l'id de l'image attacher a ma checkbox:

check.id="check"+item.IMAGE_ID;


le probleme est que j'arrive a atteindre l'id de ma checkbox mais le check est toujours false et quand je débug et que je met manuellement la valeur a true tous le reste marche..

si tu pouvais m'aider ça m'enlèverai une très grosse épine (voir un rosier là!!! ^^)
Merci d'avance.
Commenter la réponse de Smirneo
Messages postés
6069
Date d'inscription
dimanche 13 avril 2003
Dernière intervention
15 juillet 2011
- 19 févr. 2010 à 22:33
0
Merci
Il manquerait pas le not ispostpack paz hasard?
Commenter la réponse de nhervagault
Messages postés
6069
Date d'inscription
dimanche 13 avril 2003
Dernière intervention
15 juillet 2011
- 19 févr. 2010 à 22:37
0
Merci
Regardes avec firebug l'id réel de tes images ou dans le sourece
C'est peut être
panel1_check"+item.IMAGE_ID

IL n'est pas recommandé de faire l'attribution de l'id en asp.net

Il est préférable d'utiliser les repeaters pour faire ce travail et la méthode findcontrol

for (int i = 0; i <= rptNotering.Items.Count - 1; i++)
            {
                Button delete = (Button)rptNotering.Items[i].FindControl("btnDelete");
                delete.Visible = true;
                Button edit = (Button)rptNotering.Items[i].FindControl("btnEdit");
                edit.Visible = true;
            } 
Commenter la réponse de nhervagault
Messages postés
34
Date d'inscription
mardi 3 février 2009
Dernière intervention
15 décembre 2011
- 22 févr. 2010 à 09:16
0
Merci
Merci nhervagault j'essaye ca de suite et je te renvoie le retour!!
Commenter la réponse de Smirneo
Messages postés
34
Date d'inscription
mardi 3 février 2009
Dernière intervention
15 décembre 2011
- 22 févr. 2010 à 11:00
0
Merci
Alors après de multiple test avec le repeater je retrouve bien ma checkbox;
mais rien à y faire elle reste encore et toujours à false, faudrait-il recharger la page ou créer un évènement sur la checkbox coté serveur pour vérifier qu'elle est cochée??

Ou au pire des cas aurais-tu un autre contrôle que la checkbox à ajouter à l'image charger dans un panel qui permettrai de faire une sélection multiple avant une validation???

Merci...
Commenter la réponse de Smirneo
Messages postés
6069
Date d'inscription
dimanche 13 avril 2003
Dernière intervention
15 juillet 2011
- 22 févr. 2010 à 18:30
0
Merci
Peux-tu mettre le code que tu as maintenant?
Du moins une version minimal qui reproduit le bug (juste les controles
repeater et checkbox de maniere à comprendre ou est le problème.

Car je pense qu'il y a un pb de conception/utilisation du framework de ta part.
Commenter la réponse de nhervagault
Messages postés
34
Date d'inscription
mardi 3 février 2009
Dernière intervention
15 décembre 2011
- 23 févr. 2010 à 08:33
0
Merci
//Checkbox
check = new CheckBox();
check.Visible = true;
check.ID = "check";
check.Text = " A supprimé
";
check.EnableViewState = true;
check.CausesValidation = true;

//Repeater
rptNew = new Repeater();
rptNew.ID = "rpt" + i;
rptNew.Controls.Add(check);
rptNew.Controls.Add(Img);

public static string Checkbox_verif(Control c)
{
string checkid = null;
if (c != null)
{
foreach (Control item in rptNew.Parent.Controls)
{
if (item.Controls.Count > 0)
{
if (item is Repeater)
{
foreach (Control item1 in item.Controls)
{
if (item1 is CheckBox)
{//la j'y arrive mais checked = false	
if ((item1 as CheckBox).Checked)
{
checkid += (item1.ID + "/");
}
}
}
}
}
}
}
if(checkid != null)
return checkid;
else
return null;
}


la ou il y a le commentaire je vois dans le debug il y a l'id sur ma checkebox mais la valeur checked = false!! et quand dans le debug je met true tous fonctionne, c'est juste que le check n'est pas pris en compte avec les fonctions de controles.
Commenter la réponse de Smirneo
Messages postés
34
Date d'inscription
mardi 3 février 2009
Dernière intervention
15 décembre 2011
- 24 févr. 2010 à 09:38
0
Merci
Et bien tu as raison je suis en stage de fin de formation et la formation étais vraiment naze!!!
donc je suis archie débutant.

De plus dev sur framework 2 et avec des formateurs incapable!!!
Donc je suis seul en pleine mer pour ce stage!!

Heureusement il y a un vrai clan de développeur!!!

Et je te remercie beaucoup je t'envoie le retour dès que ça marche.
Commenter la réponse de Smirneo
Messages postés
34
Date d'inscription
mardi 3 février 2009
Dernière intervention
15 décembre 2011
- 24 févr. 2010 à 11:18
0
Merci
Ca marche du feu de dieu!!!


Je peut enfin reprendre!!!

Merci nhervagault.

ps: aurais-tu 2-3 adresse de tuto sur l'asp.net car comme je te dit ma formation été bidon(4 mois pour 5 language) et j'aimerais vraiment progresser!!

Merci d'avance.
Commenter la réponse de Smirneo
Messages postés
6069
Date d'inscription
dimanche 13 avril 2003
Dernière intervention
15 juillet 2011
- 24 févr. 2010 à 19:15
0
Merci
Pas de p

http://msdn.microsoft.com/fr-fr/asp.net/msdn.coachaspnet.aspx
http://msdn.microsoft.com/fr-fr/asp.net/bb758858.aspx

http://www.asp.net/learn/ --> videos de reference

Une fois ca compris tu auras une bonne base.

NB : les repeaters sont tres pratiques mais rarement utiliser
par méconnaissance.

http://mattberseth.com/ --> Exemples avec toolkit ajax


Bon dev
Commenter la réponse de nhervagault
Messages postés
3
Date d'inscription
mardi 12 février 2008
Dernière intervention
4 mai 2010
- 5 mai 2010 à 15:21
0
Merci
Bonjour nhervagault,

je suis un lecteur habituel d'aspfr et je te remercie de tous les commentaires que t'as laissé et qui m'ont aidé et continuent a le faire.

Ton code pour les checkbox est magnifique est très bien structuré, j'ai réussi à l'adapter a mon projet, mais j'ai une petite question, comment peut ont l'associé au javascript pour que ca ressemble a un vrai Treeview

je t'ai mis le lien pour le meilleur javascript que j'ai trouvé sur le net.

Je précise que dans ma table y a un champs Level (qui reprend le ID de la catégorie parent -1).

http://www.javascriptfr.com/codes/ARBORESCENCE-NIVEAUX-QUASI-ILLIMITE-CHECKBOX-AVEC-LOGIQUE-COCHE_43055.aspx

voila merci beaucoup a toi et a la communauté
Commenter la réponse de dadeskey
Messages postés
6069
Date d'inscription
dimanche 13 avril 2003
Dernière intervention
15 juillet 2011
- 6 mai 2010 à 23:14
0
Merci
@dadeskey

Tu as quoi comme debut de code

il suffit d'ajouter les events javascript sur des checkbox
et pas d'autopostback



appel la fonction javascript Decoche meme si c'est pas reconnu sous vs2005 (d'apres mes souvenirs)

J'ai utilisé ce code dans un vieux projet
Commenter la réponse de nhervagault

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.