Probleme de controle d'une checkbox créer dynamiquement

Résolu
Smirneo Messages postés 34 Date d'inscription mardi 3 février 2009 Statut Membre Dernière intervention 15 décembre 2011 - 19 févr. 2010 à 10:46
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre 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!!

14 réponses

nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
23 févr. 2010 à 19:15
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>
3
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
19 févr. 2010 à 14:02
Salut,

Quand sont crée les checkbox et quand est exécuté le code Checkbox_verif
0
Smirneo Messages postés 34 Date d'inscription mardi 3 février 2009 Statut Membre Dernière intervention 15 décembre 2011
19 févr. 2010 à 22:25
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.
0
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
19 févr. 2010 à 22:33
Il manquerait pas le not ispostpack paz hasard?
0

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

Posez votre question
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
19 févr. 2010 à 22:37
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;
            } 
0
Smirneo Messages postés 34 Date d'inscription mardi 3 février 2009 Statut Membre Dernière intervention 15 décembre 2011
22 févr. 2010 à 09:16
Merci nhervagault j'essaye ca de suite et je te renvoie le retour!!
0
Smirneo Messages postés 34 Date d'inscription mardi 3 février 2009 Statut Membre Dernière intervention 15 décembre 2011
22 févr. 2010 à 11:00
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...
0
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
22 févr. 2010 à 18:30
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.
0
Smirneo Messages postés 34 Date d'inscription mardi 3 février 2009 Statut Membre Dernière intervention 15 décembre 2011
23 févr. 2010 à 08:33
//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.
0
Smirneo Messages postés 34 Date d'inscription mardi 3 février 2009 Statut Membre Dernière intervention 15 décembre 2011
24 févr. 2010 à 09:38
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.
0
Smirneo Messages postés 34 Date d'inscription mardi 3 février 2009 Statut Membre Dernière intervention 15 décembre 2011
24 févr. 2010 à 11:18
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.
0
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
24 févr. 2010 à 19:15
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
0
dadeskey Messages postés 3 Date d'inscription mardi 12 février 2008 Statut Membre Dernière intervention 4 mai 2010
5 mai 2010 à 15:21
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é
0
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
6 mai 2010 à 23:14
@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
0
Rejoignez-nous