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#] GridView RowCommand


Sujet :

ASP.NET

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    3
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 3
    Par d�faut [C#] GridView RowCommand
    Bonjour,

    J'ai cr�e une GridView comprenant 3 colonnes :

    - 2 CommandField = 2 boutons image
    - 1 BoundField (Cl�)

    La finalit� est d'arriver � rediriger vers :

    - Page1 lorsque j'appuie sur le 1er CommandField
    - Page2 lorsque j'appuie sur le 2eme CommandField

    NB : les liens Page1 & Page2 contiennent la valeur de la Cl� (BoundField) suivant l'index de l'enregistrement selectionn� (GridView.SelectedValue).

    Voici le code execut� � l'initialisation du GridView :

    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
     
    // Initialisation GridView Suivi
    protected void GridView_Suivi_Init(object sender, EventArgs e)
    {
     
            GridView gv = (GridView)sender;
     
            gv.Columns.Clear();
     
            cfTable = new CommandField();
            cfTable.ButtonType = ButtonType.Image;
            cfTable.ShowSelectButton = true;
            cfTable.SelectText = "editer";
            cfTable.SelectImageUrl = "~/images/select.gif";
            gv.Columns.Add(cfTable);
            cfTable = null;
     
            cfTable = new CommandField();
            cfTable.ButtonType = ButtonType.Image;
            cfTable.ShowSelectButton = true;
            cfTable.SelectText = "utilisateurs associés";
            cfTable.SelectImageUrl = "~/images/icon_user.gif";
            cfTable.HeaderStyle.Width = 20;
            gv.Columns.Add(cfTable);
            cfTable = null;
     
            bfTable = new BoundField();
            bfTable.DataField = "CodeApplication";
            bfTable.HeaderText = "Application";
            bfTable.SortExpression = "CODE_APPLICATION";
            bfTable.ReadOnly = true;
            bfTable.ItemStyle.Width = 205;
            gv.Columns.Add(bfTable);
            bfTable = null;
     
    }
    Lorsque j'intercepte le clic sur un des boutons (CommandField) du GridView, j'arrive � r�cup�rer la valeur de la cl� GridView.SelectedValue mais je n'arrive pas � determiner sur quel boton a eu lieu le clic.

    Voici le code permettant d'intercepter le clic sur 2 evennements du GridView :

    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
     
    protected void GridView_Suivi_RowCommand(object sender, GridViewCommandEventArgs e)
        {
     
            GridView gvtest1 = (GridView)sender;
     
            // Comment savoir quel bouton a reçu le clic
            // Si 1er CommandField -> Redirection Page1
     
        }
     
        protected void GridView_Suivi_SelectedIndexChanged(object sender, EventArgs e)
        {
            GridView gvtest2 = (GridView)sender;
     
           // Comment savoir quel bouton a reçu le clic
           // Si 2eme CommandField -> Redirection Page2
        }
    Carlos

  2. #2
    Membre exp�riment�

    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    249
    D�tails du profil
    Informations personnelles :
    �ge : 57
    Localisation : France, Marne (Champagne Ardenne)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 249
    Par d�faut Utilise des ButtonField
    Pour faire ce que tu veux, j'utiliserai plutot des buttonField.

    Tu les cr�e � peu pr�s de la m�me fa�on, avec un CommandName sp�cifique (USER et EDITER par exemple).

    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
     
    // Initialisation GridView Suivi
    protected void GridView_Suivi_Init(object sender, EventArgs e)
    {
     
            GridView gv = (GridView)sender;
     
            gv.Columns.Clear();
     
            cfTable = new ButtonField();
            cfTable.ButtonType = ButtonType.Image;
            cfTable.Text = "editer";
            cfTable.commandName = "EDITER";
            cfTable.ImageUrl = "~/images/select.gif";
            gv.Columns.Add(cfTable);
            cfTable = null;
     
            cfTable = new ButtonField();
            cfTable.ButtonType = ButtonType.Image;
            cfTable.Text = "utilisateurs associés";
            cfTable.commandName = "USER";
            cfTable.ImageUrl = "~/images/icon_user.gif";
            cfTable.HeaderStyle.Width = 20;
            gv.Columns.Add(cfTable);
            cfTable = null;
     
            bfTable = new BoundField();
            bfTable.DataField = "CodeApplication";
            bfTable.HeaderText = "Application";
            bfTable.SortExpression = "CODE_APPLICATION";
            bfTable.ReadOnly = true;
            bfTable.ItemStyle.Width = 205;
            gv.Columns.Add(bfTable);
            bfTable = null;
     
    }
    Dans ton rowCommand, tu fais :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
     
    protected void GridView_Suivi_RowCommand(object sender, GridViewCommandEventArgs e)
        {
     
            if e.commandName = "USER" ...
            if e.commandName = "EDITER" ...
     
        }
    Plus facile non ?

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    3
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 3
    Par d�faut On y arrive presque...
    Effectivement, en utilisant un ButtonField on arrive � distinguer le controle d'origine grace � e.commandName. Merci pour ton aide.

    Par contre je n'arrive plus � acceder � la valeur du BoundField (datakey) qui �tait accessible avec un CommandField etla gestion de l'�vennement GridView_SelectedIndex

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
     
    protected void GridView_Suivi_SelectedIndexChanged(object sender, EventArgs e)
        {
     
            GridView gvtest = (GridView)sender;
     
            string strCle = gvtest.SelectedValue.ToString();
    Mon besoin est de distinguer le controle qui effectue le clic (ButtonField + Evennement GridView RowCommand = OK) et de r�cup�rer la valeur de la cl� selectionn�e (CommandField + Evennement GridView SelectedIndex)

    Il y a-t-il un moyen de r�pondre � ces 2 besoins simultan�ment ?

    Carlos

  4. #4
    Membre �m�rite Avatar de cubitus91
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2004
    Messages
    726
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 43
    Localisation : France

    Informations professionnelles :
    Activit� : Consultant informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 726
    Par d�faut
    Salut ,
    voila ce que tu cherche ca pourra t aider !!!
    http://msdn2.microsoft.com/fr-fr/lib...ld(VS.80).aspx

  5. #5
    Membre confirm�
    Inscrit en
    Avril 2004
    Messages
    123
    D�tails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 123
    Par d�faut
    j'esp�re que �a va t'aider:
    protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
    {

    int index;
    string cle;
    if (e.CommandName == "USER")
    {
    // "index" repr�sente l'indice de la ligne de la gridview
    index = Convert.ToInt32(e.CommandArgument);
    // instancier une ligne de la gridview
    GridViewRow row_grid = GridView1.Rows[index];
    // r�cup�rer la valeur de la premiere cellule de la ligne
    cle = row_grid.Cells[0].Text;
    ...
    }

    if (e.CommandName == "EDITER")
    {
    // "index" repr�sente l'indice de la ligne de la gridview
    index = Convert.ToInt32(e.CommandArgument);
    // instancier une ligne de la gridview
    GridViewRow row_grid = GridView1.Rows[index];
    // r�cup�rer la valeur de la premiere cellule de la ligne
    cle = row_grid.Cells[0].Text;
    ...
    }

    }
    bon codage

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    3
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 3
    Par d�faut Bravo ! et surtout merci !!!!
    Le code fonctionne parfaitement. Merci infiniment !

    Voici le code final :
    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
     
    protected void GridView_Suivi_RowCommand(object sender, GridViewCommandEventArgs e)
        {
     
            int index = Convert.ToInt32(e.CommandArgument);
     
            GridView gvtest = (GridView)sender;
     
            string strCle;
     
            switch (e.CommandName)
            {
                case "user":
     
                    strCle = gvtest.Rows[index].Cells[3].Text; // la clé correspond à la 4ème colonne
     
     
                    Response.Redirect("~/appli/suivi.aspx?item=membre&type=suivi&application=" + strCle);
     
                    break;
     
                case "role":
     
                    strCle = gvtest.Rows[index].Cells[3].Text;
     
                    Response.Redirect("~/appli/suivi.aspx?item=role&type=suivi&application=" + strCle);
     
                    break;
     
            } // Fin switch (e.CommandName)
     
        } // Fin protected void GridView_Suivi_RowCommand(object sender, GridViewCommandEventArgs e)

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. Probleme rowcommand d'un gridview
    Par Msysteme dans le forum ASP.NET
    R�ponses: 2
    Dernier message: 28/01/2015, 22h20
  2. Probl�me RowCommand GridView
    Par Emilien69 dans le forum ASP.NET
    R�ponses: 1
    Dernier message: 24/09/2009, 13h46
  3. GridView, UpdatePanel, Templatefield et RowCommand
    Par osyks dans le forum ASP.NET
    R�ponses: 0
    Dernier message: 20/07/2009, 11h45
  4. RowCommand d'une GridView se r�pete 2 fois
    Par grominet_79 dans le forum ASP.NET
    R�ponses: 1
    Dernier message: 08/07/2009, 15h52
  5. Gridview et rowcommand
    Par Poulain dans le forum ASP.NET
    R�ponses: 5
    Dernier message: 07/05/2007, 20h02

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