Problème datagrid

adressprov Messages postés 62 Date d'inscription mercredi 21 juin 2006 Statut Membre Dernière intervention 24 mars 2007 - 7 août 2006 à 19:20
adressprov Messages postés 62 Date d'inscription mercredi 21 juin 2006 Statut Membre Dernière intervention 24 mars 2007 - 25 août 2006 à 18:50
Voila le problème que je rencontre, j'ai un datagrid avec une colonne
de checkbox d'ailleurs je ne sais pas pourquoi mais elle s'affiche sur
ma première colonne, je ne sais pas si on peux changer ça mais mon
principal problème ne vient pas de là.

En je veux récupérer l'événement lorsque l'utilisateur va cliquer sur l'une des mes cases à cocher.


J'ai fait ce bout de code mais une erreur apparaît, je ne sais pas d'où vient le problème. Voici le code :


private void InitializeComponent(){

    this.DataGridCom.SelectedIndexChanged += new System.EventHandler(this.DataGridCom_SelectedIndexChanged);

    this.Load += new System.EventHandler(this.Page_Load);

}


private void DataGridCom_SelectedIndexChanged(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)

{

     //Il faut que je regarde quel commercial l'utilisateur vient de cocher ou décocher

     CheckBox MyCheckBox=(CheckBox) e.Item.FindControl("CheckBox1");

     if (MyCheckBox != null){

        MyCheckBox.CheckedChanged +=new EventHandler(MyCheckBox_CheckedChanged);

    }

}

       

private void MyCheckBox_CheckedChanged(object sender, EventArgs e) {

    CheckBox CheckBoxSelectionne=(CheckBox) sender;

    CheckBox MyCheckBox=(CheckBox) e.Item.FindControl("CheckBox1");

    if (CheckBoxSelectionne.Checked){

        Label3.Text+="Vous avez cochez une case";

    } else {

        Label3.Text+="Vous avez décochez une case";

    }

}


Voici l'erreur que j'obtiens lors de la compilation


La méthode
'WebApplication1.WebForm4.DataGridCom_SelectedIndexChanged(object,
System.Web.UI.WebControls.DataGridItemEventArgs)' ne correspond pas au
délégué 'void System.EventHandler(object, System.EventArgs)


mais aussi celle-ci 'System.EventArgs' ne contient pas de définition pour 'Item'


Je pense que si je reègle le premier problème, le second devrait disparaitre.

14 réponses

jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
7 août 2006 à 23:24
Bonsoir,


L'erreur que tu obtiens est normal, il suffit de mettre la bonne signature dans ta ma méthode CheckedChanged comme indiqué dans le message d'erreur :


private void MyCheckBox_CheckedChanged(object sender, DataGridItemEventArgs){}

Mais ca ne fonctionnera pas mieux, il faut s'abonner à l'evenement rowCommand de ton datagrid et mettre le autopostback a true sur ton checkbox.





<hr />
Cyril - MVS - MCP
0
adressprov Messages postés 62 Date d'inscription mercredi 21 juin 2006 Statut Membre Dernière intervention 24 mars 2007
8 août 2006 à 10:48
Oui en effet sa ne marche pas mieux, il me créer une autre erreur.

Par contre, je ne trouve pas l'événement rowCommand de mon datagrid, sinon j'ai mis le autopostback à true.


Comment fais tu pour trouver l'événement rowCommand moi je n'ai que les
catégories action avec CancelCommand, DeleteCommand, EditCommand,
ItemCommand, PageIndexChanged, SelectedIndexChanged, SortCommand,
UpadateCommande puis après une autre catégorie Comportement avec
ItemCreated et ItemDataBound. Puis la catégorie Divers avec Disposed,
Init, Load, PreRendr, Unload et enfin la dernière catégorie Données
avec l'événement DataBinding.


Je voudrais savoir aussi comment tu fais pour connaitre tous les
fonctions, méthodes et événements d'un objets par ce que moi je galère.
J'ai déjà été voir sur Msdn mais il ya même pas les évenements
ItemSelectedChanged et les autres pour le dataGrid.
0
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
8 août 2006 à 11:08
Bonjour,

A force de les utiliser on les connait plus ou moins par coeur :) l'evenement rowcommand est pour le gridview le remplacant de (l'horrible) datagrid, il faut utiliser l'evenement itemcommand dans ton cas.

MSDN possede toutes les infos que tu cherches ou sinon il y a l'intelissense qui aide beaucoup :)

<hr />Cyril - MVS - MCP
0
adressprov Messages postés 62 Date d'inscription mercredi 21 juin 2006 Statut Membre Dernière intervention 24 mars 2007
8 août 2006 à 11:19
Oui mais moi je n'ai pas de GridView mais un DataGrid, cela doit être pour sa que je ne vois pas cet événement.

Si j'ai bien compris le GridView est apparu sur la version 2006 de Visual Net et moi je travaille sur la version 2003.

Je ne peux donc pas utiliser GridView, si ???
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
8 août 2006 à 11:40
Tu peux utiliser le gridview en utilisant .net 2 et donc visual studio 2005 mais en .net 1.1 ce n'est pas possible.

<hr />Cyril - MVS - MCP
0
adressprov Messages postés 62 Date d'inscription mercredi 21 juin 2006 Statut Membre Dernière intervention 24 mars 2007
8 août 2006 à 11:52
Ok merci.

Donc je ne peux pas utiliser l'événement RowCommand. Bon je suis mal
barré si je comprends bien, il faut que j'aille acheter la version 2005
:). Non mais s'en déconé j'ai pas d'autre solution pour récupérer les
événements de l'utilisateur sur mes checkbox.
0
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
8 août 2006 à 12:11
Si tu as lu mon post plus haut je te dit d'utiliser itemcommand ;-)

pour ce qui est d'acheter la version 2005, elle est gratuite avec Visual Web Dev Express ... donc si tu fais des trucs simples (pas de créations de contrôles, multi projets dans la meme solution, etc...) tu peux utiliser cette version gratuite :-)

<hr />Cyril - MVS - MCP
0
adressprov Messages postés 62 Date d'inscription mercredi 21 juin 2006 Statut Membre Dernière intervention 24 mars 2007
8 août 2006 à 12:38
Si si, j'ai vu mais la encore je tombe sur une erreur qui est

"La méthode 'WebApplication1.WebForm4.MyCheckBox_CheckedChanged(object,
System.Web.UI.WebControls.DataGridItemEventArgs)' ne correspond pas au
délégué 'void System.EventHandler(object, System.EventArgs)'"


Voici le code

private void InitializeComponent(){

    this.DataGridCom.ItemCommand += new

    System.Web.UI.WebControls.DataGridCommandEventHandler(this.DataGridCom_ItemCommand);

    this.Load += new System.EventHandler(this.Page_Load);

}


private void MyCheckBox_CheckedChanged(object sender, DataGridItemEventArgs e){

    CheckBox CheckBoxSelectionne=(CheckBox) sender;

    CheckBox MyCheckBox=(CheckBox) e.Item.FindControl("CheckBox1");

     if (CheckBoxSelectionne.Checked){

        Label3.Text+="Vous avez cochez une case";

    }else{

        Label3.Text+="Vous avez décochez une case";

    }

}


private void DataGridCom_ItemCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e){

    CheckBox MyCheckBox=(CheckBox) e.Item.FindControl("CheckBox1");

    if (MyCheckBox != null) {

        MyCheckBox.CheckedChanged +=new EventHandler(MyCheckBox_CheckedChanged);
    }
}


Je sais que c'est la même erreur que tout à l'heure mais je ne vois pas ce que je dois changé
0
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
8 août 2006 à 13:45
A partir du message d'erreur tu peux facilement résoudre le problème ...

private void MyCheckBox_CheckedChanged(object sender, DataGridItemEventArgs e){
>
private void MyCheckBox_CheckedChanged(object sender, EventArgs e){

mais tu auras encore d'autres erreurs que je te laisse chercher si je te fais tout tu ne comprendra pas forcement le problème ;-) au pire revient ici et je t'éguillerais

<hr />Cyril - MVS - MCP
0
adressprov Messages postés 62 Date d'inscription mercredi 21 juin 2006 Statut Membre Dernière intervention 24 mars 2007
8 août 2006 à 18:44
En effet j'ai encore une erreur, il me dit que 'System.EventArgs' ne
contient pas de définition pour 'Item' donc j'ai changé un
DataGridCommandEventHandler car je pense que lui peut gérer les items
mais après je reviens sur l'ancienne erreur c'est à dire


La méthode 'WebApplication1.WebForm4.MyCheckBox_CheckedChanged(object,
System.EventArgs)' ne correspond pas au délégué 'void
System.Web.UI.WebControls.DataGridCommandEventHandler(object,
System.Web.UI.WebControls.DataGridCommandEventArgs)'


A mon avis, il faut que je change de signature quelque part mais la
encore je ne sais pas malgré avoir cherché toute cette après midi.

Je veux bien un petit conseil afin que je puisse trouver la solution.
0
adressprov Messages postés 62 Date d'inscription mercredi 21 juin 2006 Statut Membre Dernière intervention 24 mars 2007
9 août 2006 à 11:30
Bon peut être que la nuit porte conseil, j'arrive à lancer mon code mais bon sa ne m'affiche rien.

Losrque je coche une case, la page se recharge s'en doute à cause du autopostback de mes cases à cocher mis à true.

Donc le checkbox que je viens de cocher redevient décocher et je ne rentre pas dans ma fonction DataGridCom_ItemCommand.


Voici donc le code, cela vient peut être de là.


private void InitializeComponent(){

 this.DataGridCom.ItemCommand += new

 System.Web.UI.WebControls.DataGridCommandEventHandler(this.DataGridCom_ItemCommand);

 this.Load += new System.EventHandler(this.Page_Load);

}


private void DataGridCom_ItemCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e) {

 Response.Write(" <script>alert("" + "Coucou " +  "");</script> ");

 CheckBox MyCheckBox =(CheckBox)e.Item.FindControl("CheckBox1");

  if (MyCheckBox != null) {

    MyCheckBox.CheckedChanged +=new EventHandler(MyCheckBox_CheckedChanged);

  }

}


private void MyCheckBox_CheckedChanged(object sender, EventArgs e) {

 DataGridCommandEventArgs test = (DataGridCommandEventArgs)e;

 CheckBox CheckBoxSelectionne=(CheckBox) sender;

 CheckBox MyCheckBox=(CheckBox) test.Item.FindControl("CheckBox1");

           

 string nom="";

          

  //on parcours les items du datagrid

  //on compare chaque checkbox avec le checkbox que l'utilisateur a coché

  foreach (DataGridItem ligne in DataGridCom.Items) {

    CheckBox MonCheckBox=(CheckBox) ligne.FindControl("CheckBox1");

     if (MonCheckBox == CheckBoxSelectionne)

      nom=ligne.Cells[1].Text;

  }


   if (CheckBoxSelectionne.Checked) {

    Response.Write("<script>alert(""
+ "Vous avez sélectionné " + nom +
"");</script>");   
           
   

   } else {

    
Response.Write("<script>alert("" + "Vous avez
désélectionné " + nom + "");</script>");

  }

}
0
adressprov Messages postés 62 Date d'inscription mercredi 21 juin 2006 Statut Membre Dernière intervention 24 mars 2007
16 août 2006 à 11:58
Toujours aucune idée ?
0
adressprov Messages postés 62 Date d'inscription mercredi 21 juin 2006 Statut Membre Dernière intervention 24 mars 2007
18 août 2006 à 12:58
Yep Cyril, je veux bien un coup de main, je suis toujours bloqué.

J'ai rajouté un if (!Page.IsPostBack) dans le page_load mais sa change rien, lors du clique sur l'un des checkbox je n'arrive pas à passer dans ma fonction DataGridCom_ItemCommand car il ne m'affiche pas coucou.

Je ne vois pas d'où viens le problème.

Please helpl me !!!
0
adressprov Messages postés 62 Date d'inscription mercredi 21 juin 2006 Statut Membre Dernière intervention 24 mars 2007
25 août 2006 à 18:50
Bon ba sa fait 20 jours que je galère sur ce même problème et je n'ai toujours pas avancé
0
Rejoignez-nous