IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP.NET Discussion :

[C#] recuperer l'evenement click d'un bouton dans datagrid


Sujet :

ASP.NET

  1. #1
    Membre régulier Avatar de shams
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 210
    Points : 83
    Points
    83
    Par défaut [C#] recuperer l'evenement click d'un bouton dans datagrid
    hello!

    bon alors voila, j'ai créer plusieurs boutons dans une boucle for (dans le code behind). Chaque boutons se trouve dans une table.
    A coté de ce bouton il y a aussi un checkboxs

    j'aimerais savoir comment faire pour recuperer
    1 - l'evenement "click" du bouton
    2 - l'etat du checkbox a coté de lui
    3 - l'indice "i" de ma boucle

    je sais pas si vous avez tres bien compris ce que je voulais dire, mais je vous remercie d'avance pour votre aide les keupins!

  2. #2
    Membre à l'essai
    Inscrit en
    Avril 2005
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 13
    Points : 11
    Points
    11
    Par défaut
    Bon je vois que personne te reponds donc je tente un debut de reponse bien que je ne fasse pas de code-behind et mon code est en vb.net.

    Pour recuperer le click sur le bouton.

    Faut que ton datagrid gère l'evenement OnItemCommand et que tu aie la propriete "CommandName=blabla" sur ton bouton.

    Ensuite quand tu cree ta procedure qui est declenché a l'aide de l'evennement OnItemCommand du datagrid, tu fais "if e.CommandName = "blabla" Then ...

    Pour l'etat du checkBox a cote de lui, tu fais

    Dim cb As CheckBox = CType(e.Item.cell(leNumerodelacolonne).FindControl("l'idDeTonCheckbox"), CheckBox)


    pour le numero de ligne je te conseille de mettre une colonne caché qui contient ce numero et que tu obtient comme ceci :

    Dim numLigne as int32 = e.Item.Cells(0).Value


    BOn voila c'est plus des pistes qu'autre chose mais des fois ca peut aider

  3. #3
    Membre régulier Avatar de shams
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 210
    Points : 83
    Points
    83
    Par défaut
    les bonnes pistes menent toujours a la bonne solution...!
    merci pour ta reponse, je vais voir avec mes trucs a moi et essayer divers trucs (en fait, j'utilise pas de dataGrid mias des tables toute betes, mais c'est pas grave je pense...)

    Je mettrais mon code quand j'aurais reussi.

    MAY ZE FORCE BE WITH YOU

  4. #4
    Membre régulier Avatar de shams
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 210
    Points : 83
    Points
    83
    Par défaut
    bon en fait je m'en sors pas trop....
    j'ai deux problemes, qui je pense, sont similaires

    1) Dans le code behind, j'ai fais une boucle for dans laquelle je crée une table. Je remplis chaque table avec une entrée de la base de donnée.
    J'ai ajouté dans la table un bouton pour modifier ma base de donnée. Donc quand on clique dessus, je dois recuperer certains champs de ma table i, et modifier a la ligne i ma base de donnée.
    Je ne sais pas comment ecrire les conseils precedement données!!

    2) Presque pareil, mais cette fois ci j'ai crée une datagrid en mode design. Cette datagrid n'a pas tous les champs de ma base de donnée. J'ai rajouté une TemplateColumn avec des boutons pour modifier, supprimer, ajouter (mais ce sont mes propres boutons, pas ceux generés par le builder de colonnes) .
    Je ne sais pas comment faire pour que quand je clique sur modifier, toute mes cellules de la ligne se transforme en textbox. Ou bien si je clique sur ajouter -> ca ajoute a la base...

    voila en fait c'est le meme probleme je pense... Je suis en train de regarder tous les posts sur les datagri mais je comprend pas tout...
    Donc merci de votre aide!!!!

  5. #5
    Expert éminent
    Avatar de pmithrandir
    Homme Profil pro
    Responsable d'équipe développement
    Inscrit en
    Mai 2004
    Messages
    2 418
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Responsable d'équipe développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 418
    Points : 7 296
    Points
    7 296
    Par défaut
    verifie que ton dataset est rempli

  6. #6
    Membre régulier Avatar de shams
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 210
    Points : 83
    Points
    83
    Par défaut
    il est bien rempli.
    En fait si je fais juste glisser une datagrid (en mode design) elle se rempli bien
    Mais la , j'ai fais des colonnes en mode "editeur de colonne", j'ai mis des TemplatesColumn avec des textBox dans le EditItem. Mais j'ai mis une colonne de moins car il y a un champs de ma base de donnée que je ne veux pas voir...
    En fait : comment faire pour dire dans le codeBehind que telle colonne correspond a tel champs de ma base

    Et en fait, je comprend bien le tuto, mais je ne sais pas comment on fait pour relier une procedure a son bouton....

  7. #7
    Membre émérite
    Avatar de Nesmontou
    Homme Profil pro
    Architecte logiciel
    Inscrit en
    Septembre 2004
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Architecte logiciel
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2004
    Messages : 1 612
    Points : 2 969
    Points
    2 969
    Par défaut
    Tu peux nous donner un peu de code pour voir comment tu crées ton datagrid et les fonctions que tu utilises :

  8. #8
    Membre régulier Avatar de shams
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 210
    Points : 83
    Points
    83
    Par défaut
    bon alors attention c'est un peu long:
    voici ma datagrid
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    			<asp:DataGrid id="DataGridLabo" style="Z-INDEX: 101; LEFT: 112px; POSITION: absolute; TOP: 576px"
    				runat="server" Width="720px" Height="25px" BorderColor="Green" BorderStyle="Double" BorderWidth="5px"
    				AutoGenerateColumns="False" ShowFooter="True">
    				<EditItemStyle BackColor="#FF8080"></EditItemStyle>
    				<HeaderStyle Font-Bold="True" ForeColor="White" BackColor="Navy"></HeaderStyle>
    				<FooterStyle BackColor="#FFFF80"></FooterStyle>
    				<Columns>
    					<asp:TemplateColumn HeaderText="Labo">
    						<FooterTemplate>
    							<asp:TextBox id="TextBoxAjouteLabo" runat="server"></asp:TextBox>
    						</FooterTemplate>
    						<EditItemTemplate>
    							<asp:TextBox id="TextBoxModifLabo" runat="server"></asp:TextBox>
    						</EditItemTemplate>
    					</asp:TemplateColumn>
    					<asp:TemplateColumn HeaderText="Nom">
    						<FooterTemplate>
    							<asp:TextBox id="TextBoxAjouteNom" runat="server"></asp:TextBox>
    						</FooterTemplate>
    						<EditItemTemplate>
    							<asp:TextBox id="TextBoxModifNom" runat="server"></asp:TextBox>
    						</EditItemTemplate>
    					</asp:TemplateColumn>
    					<asp:TemplateColumn HeaderText="Prenom">
    						<FooterTemplate>
    							<asp:TextBox id="TextBoxAjoutePrenom" runat="server"></asp:TextBox>
    						</FooterTemplate>
    						<EditItemTemplate>
    							<asp:TextBox id="TextBoxModifPrenom" runat="server"></asp:TextBox>
    						</EditItemTemplate>
    					</asp:TemplateColumn>
    					<asp:TemplateColumn HeaderText="Mail">
    						<FooterTemplate>
    							<asp:TextBox id="TextBoxAjouteMail" runat="server" Width="184px"></asp:TextBox>
    						</FooterTemplate>
    						<EditItemTemplate>
    							<asp:TextBox id="TextBoxModifMail" runat="server" Width="184px"></asp:TextBox>
    						</EditItemTemplate>
    					</asp:TemplateColumn>
    					<asp:TemplateColumn>
    						<ItemTemplate>
    							<asp:Button id="ButtonModifier" runat="server" Width="80px" Font-Bold="True" Text="Modifier"
    								CommandName="modif"></asp:Button>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    							<asp:Button id="ButtonSupprimer" runat="server" Width="93px" Font-Bold="True" Text="Supprimer"
    								CommandName="suppr"></asp:Button>
    						</ItemTemplate>
    						<FooterTemplate>
    							&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    							<asp:Button id="ButtonAjouter" runat="server" Width="120px" Font-Bold="True" Text="Ajouter"
    								CommandName="ajout"></asp:Button>
    						</FooterTemplate>
    						<EditItemTemplate>
    							&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    							<asp:Button id="ButtonValider" runat="server" Font-Bold="True" Text="Valider" CommandName="valid"></asp:Button>
    						</EditItemTemplate>
    					</asp:TemplateColumn>
    				</Columns>
    			</asp:DataGrid>
    ce qui donne:

    voila, en fait je veux "juste" que quand on clik sur "modifier", il y ait les textbox qui apparaissent, pis si on clik sur supprimer, bha ca supprime...

  9. #9
    Expert éminent
    Avatar de pmithrandir
    Homme Profil pro
    Responsable d'équipe développement
    Inscrit en
    Mai 2004
    Messages
    2 418
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Responsable d'équipe développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 418
    Points : 7 296
    Points
    7 296
    Par défaut
    tu as une solution qui existe en javascript qui consiste a aller chercher tous les child du tableau, puis a les remplacer par des textbox...

    c'est galere je te previent...

    http://tool-man.org/examples/edit-in-place.html

  10. #10
    Membre régulier Avatar de shams
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 210
    Points : 83
    Points
    83
    Par défaut
    hola javascript c'est pas trop mon truc...
    En cas, ca c'est pas trop grave je peux mettre directement des textbox, mais il me reste toujours ce probleme de savoir comment on fait pour dire que un bouton doit appeler tel procedure avec en parametre la ligne i...

    En tout cas, merci beaucoup pour ton aide, c'est vraiment sympa...

  11. #11
    Membre émérite
    Avatar de Nesmontou
    Homme Profil pro
    Architecte logiciel
    Inscrit en
    Septembre 2004
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Architecte logiciel
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2004
    Messages : 1 612
    Points : 2 969
    Points
    2 969
    Par défaut
    A premiere vue le datagrid est ok

    Pour les fonctions tu vas dans :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DataGridLabo_ItemCommand
    Et tu fais le test sur le commandename

    Pour le paramètre, tu peux utiliser le commandargument

  12. #12
    Expert éminent
    Avatar de pmithrandir
    Homme Profil pro
    Responsable d'équipe développement
    Inscrit en
    Mai 2004
    Messages
    2 418
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Responsable d'équipe développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 418
    Points : 7 296
    Points
    7 296
    Par défaut
    va voir mon poste juste en dessous sur els image bouton, c'ets la meme question ;-)

  13. #13
    Membre éprouvé
    Profil pro
    Inscrit en
    Août 2003
    Messages
    835
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2003
    Messages : 835
    Points : 1 046
    Points
    1 046
    Par défaut
    Arf, du javaScript pour ça, alors que tout est prévu dans les DataGrid.

    shams je vois que tu as déja créer tes EditItemTemplate, il ne te reste plus que sur l'evenement "click" de ton bouton éditer, à positionner la "SelectedIndex" de ta grid sur la bonne ligne. Il faut aussi qu'a ce moment la ta derniere colonne affiche un bouton "sauver" ou "annuler", pour ça il suffit aussi de mettre une EditItemTemplate sur ta derniere colonne, et puis a gerer ces evenements également.

    Je ne saurai trop te conseiller la lecture d'un bon tutoriel / livre sur les DataGrid

  14. #14
    Membre émérite
    Avatar de Nesmontou
    Homme Profil pro
    Architecte logiciel
    Inscrit en
    Septembre 2004
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Architecte logiciel
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2004
    Messages : 1 612
    Points : 2 969
    Points
    2 969
    Par défaut
    tu peux faire un truc comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
        Private Sub rptCommandes_ItemCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.RepeaterCommandEventArgs) Handles rptCommandes.ItemCommand
            If e.CommandName = "cmdCommandeDvp" Then
                Dim intCommandeID As Integer = CType(e.CommandArgument, Integer)
                Dim intSocieteID As Integer = CType(HttpContext.Current.Session("intSocieteID"), Integer)
                If HttpContext.Current.Session("btnDvp" & intCommandeID) = "+" Then
                    HttpContext.Current.Session("btnDvp" & intCommandeID) = "-"
                Else
                    HttpContext.Current.Session("btnDvp" & intCommandeID) = "+"
                End If
                rptCommandesBind(Me.rptCommandes, intSocieteID)
    End Sub
    Bon, là c'est une fonction à moi, j'ai pas adapté et c'est du VB.NET, y va falloir traduire un peu mais l'idée est là

  15. #15
    Membre régulier Avatar de shams
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 210
    Points : 83
    Points
    83
    Par défaut
    Citation Envoyé par Sphax
    il ne te reste plus que sur l'evenement "click" de ton bouton éditer
    C'est justement cette etape qui me pose probleme!!! Comment je fais pour appeler l'evenement click??? Je suis en train de chercher....

    En tout cas merci a tous pour votre aide (c'est trop de la patate atomique ce forum )

    Ps: J'ai effectivement mis un bouton de validation en mode edition.


    ----

    merci pour l'exemple nesmontou, j'avais pas vu...
    Au fait, j'abuse un peu, mais vous n'auriez pas une idée de pourquoi ma grid ne se rempli pas. Bon la, je demande, mais j'ai pas encore fait de recherche donc je vais voir mais c'etait au Kazoo!!! (au cas où -> jeu de mot un peu nul, desolé...)

  16. #16
    Membre régulier Avatar de shams
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 210
    Points : 83
    Points
    83
    Par défaut
    et voila!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    private void InitializeComponent()
    {
         this.DataGridLabo.ItemCommand += new system.Web.UI.WebControls.DataGridCommandEventHandler(this.DataGridLabo_ItemCommand);
          this.Load += new System.EventHandler(this.Page_Load);
    }
     
     
    public void DataGridLabo_ItemCommand(object sender, System.Web.UI.WebControls.DataGridCommandEventArgs e)
    {
         // recuperation du dataset et du dataAdapter
         System.Data.DataSet dataset = (System.Data.DataSet) Session["dataset"];
         System.Data.OleDb.OleDbDataAdapter dataAdapter = (System.Data.OleDb.OleDbDataAdapter)Session["adapter1"];
     
         if (e.CommandName == "modif")
         { 
               // ACTION -> REACTION!!
               DataGridLabo.EditItemIndex = e.Item.ItemIndex;
              // refaite un bind de votre dataGrid
         }
    }

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 9
    Dernier message: 12/04/2013, 18h01
  2. Réponses: 7
    Dernier message: 26/05/2011, 09h37
  3. evenement click commun à plusieurs bouton
    Par king13 dans le forum VBA Access
    Réponses: 7
    Dernier message: 23/10/2009, 03h48
  4. Réponses: 4
    Dernier message: 23/07/2007, 13h38
  5. Réponses: 5
    Dernier message: 23/01/2007, 17h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo