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

C# Discussion :

C# GridView Récupérer valeur d'une cellule


Sujet :

C#

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    51
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Novembre 2009
    Messages : 51
    Par défaut C# GridView Récupérer valeur d'une cellule
    Bonjour,

    Ayant déjà fais le tour de votre site, ainsi que d'autres, et n'ayant malheureusement toujours pas trouvé de moyen de m'en sortir, je viens poser une question qui je le sais vous a déjà été posée.

    Dans les faits :
    *Je créer un GridView
    *Je le remplis avec un SqldataSource et un SelectCommand
    *Je rajoute une colonne action qui possède un bouton détail

    Tout ça ça marche ^^.

    Et je voudrais que lorsque l'utilisateur clique sur le bouton détail s'affiche alors un autre GridView avec les données supplémentaire extraite de la base de donnée.

    Mon problème est de réussir à récupérer la valeur clé de la ligne sur laquelle l'utilisateur clique (le linkbouton) pour que je puisse trouver toutes les données supplémentaire dans ma base.

    Voici mon code :

    Voici le code de de la 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
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
     
        <p class="corps">
                  <asp:GridView ID="gvContrat" OnRowCreated="gvContrat_OnRowCreated" OnRowCommand="gvContrat_OnRowCommand" runat="server" DataKeyNames="N_COD_NUMCONTRAT" AutoGenerateColumns="False" DataSourceID="SqlDataSourceAll" style="background-color: transparent; text-align: center; clear: both; table-layout: fixed; display: block; font-weight: normal; float: none; background-image: none; page-break-before: auto; page-break-after: auto; overflow: scroll; cursor: auto; color: black; line-height: normal; font-style: normal; letter-spacing: normal; border-collapse: collapse; font-variant: normal; text-decoration: none; border-right: #000033 thin solid; border-top: #000033 thin solid; border-left: #000033 thin solid; border-bottom: #000033 thin solid; left: 50px; position: absolute;" CellPadding="4" ForeColor="#333333" GridLines="None">
                          <Columns>
                           <asp:BoundField DataField="N_COD_NUMCONTRAT" HeaderText="N_COD_NUMCONTRAT" ReadOnly="True"
                                SortExpression="N_COD_NUMCONTRAT">
                                <HeaderStyle Width="70px" />
                           </asp:BoundField>
                            <asp:BoundField DataField="N_COD_NUMCOFFRE" HeaderText="Numéro du coffre"
                                SortExpression="N_COD_NUMCOFFRE" >
                                <HeaderStyle Width="70px" />
                            </asp:BoundField>
                            <asp:BoundField DataField="N_COD_NUMDOS" HeaderText="Numéro du dos" SortExpression="N_COD_NUMDOS" >
                                <HeaderStyle Width="70px" />
                            </asp:BoundField>
                            <asp:BoundField DataField="S_LIB_DESIGNATION" HeaderText="Désignation" SortExpression="S_LIB_DESIGNATION" >
                                <HeaderStyle Width="130px" />
                            </asp:BoundField>
                            <asp:BoundField DataField="S_LIB_NOMCONTRACTANT" HeaderText="Contractant" SortExpression="S_LIB_NOMCONTRACTANT" >
                                <HeaderStyle Width="130px" />
                            </asp:BoundField>
                            <asp:BoundField DataField="S_LIB_INITIALESCONTRACTANT" HeaderText="Initiales" SortExpression="S_LIB_INITIALESCONTRACTANT" >
                                <HeaderStyle Width="50px" />
                            </asp:BoundField>
                            <asp:BoundField DataField="S_LIB_NOMDIRECTION" HeaderText="Direction" SortExpression="S_LIB_NOMDIRECTION" >
                                <HeaderStyle Width="150px" />
                            </asp:BoundField>
                            <asp:BoundField DataField="SIGNATURE" HeaderText="Signataire ou interlocuteur" SortExpression="SIGNATURE" >
                                <HeaderStyle Width="150px" />
                            </asp:BoundField>
                            <asp:BoundField DataField="S_DAT_SIGNATURE" HeaderText="Date de signature du contrat" SortExpression="S_DAT_SIGNATURE">
                                <HeaderStyle Width="100px" />
                            </asp:BoundField>
                            <asp:BoundField DataField="S_DAT_FIN" HeaderText="Date de fin" SortExpression="S_DAT_FIN">
                                <HeaderStyle Width="100px" />
                            </asp:BoundField>
                            <asp:BoundField DataField="S_DAT_RESIL" HeaderText="Date de Résiliation" SortExpression="S_DAT_RESIL" >
                                <HeaderStyle Width="100px" />
                            </asp:BoundField>
                            <asp:BoundField DataField="S_DAT_FINARCHI" HeaderText="Date de fin d'archivage" SortExpression="S_DAT_FINARCHI" >
                                <HeaderStyle Width="100px" />
                            </asp:BoundField>
                            <asp:CheckBoxField DataField="B_BOL_SCANNE" HeaderText="Scanné" SortExpression="B_BOL_SCANNE" >
                                <HeaderStyle Width="90px" />
                            </asp:CheckBoxField>
                            <asp:CheckBoxField DataField="B_BOL_RECOND" HeaderText="Reconductible" SortExpression="B_BOL_RECOND" >
                                <HeaderStyle Width="90px" />
                            </asp:CheckBoxField>
                            <asp:CheckBoxField DataField="B_BOL_RESILIE" HeaderText="Résilié" SortExpression="B_BOL_RESILIE"  >
                                <HeaderStyle Width="90px" />
                            </asp:CheckBoxField>
                            <asp:TemplateField HeaderText="Actions" >
                                 <ItemTemplate>
                                     <asp:LinkButton ID="action" OnClick="BtnTest_OnClick" Text="Détails" runat="server" Width="100px" />  
                                </ItemTemplate>
                            </asp:TemplateField>
     
                        </Columns>
                        <FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
                        <RowStyle BackColor="#F7F6F3" ForeColor="#333333" />
                        <PagerStyle BackColor="#284775" ForeColor="White" HorizontalAlign="Center" />
                        <SelectedRowStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" />
                        <HeaderStyle BackColor="#000066" Font-Bold="True" ForeColor="White" />
                        <EditRowStyle BackColor="#999999" />
                        <AlternatingRowStyle BackColor="White" ForeColor="#284775" />
                    </asp:GridView>
                    <asp:SqlDataSource  SelectCommand="SELECT N_COD_NUMCONTRAT, N_COD_NUMCOFFRE, N_COD_NUMDOS, S_LIB_DESIGNATION, S_LIB_NOMCONTRACTANT, S_LIB_INITIALESCONTRACTANT, S_LIB_NOMDIRECTION, S_LIB_NOMSIGNATURE + S_LIB_PRENONSIGNATURE AS SIGNATURE, S_DAT_SIGNATURE, S_DAT_FIN, S_DAT_RESIL, S_DAT_FINARCHI, B_BOL_SCANNE, B_BOL_RECOND, B_BOL_RESILIE FROM contrat, signature, contractant, direction, designation WHERE contrat.N_COD_DESIGNATION = designation.N_COD_DESIGNATION AND contrat.N_COD_NUMCONTRACTANT = contractant.N_COD_NUMCONTRACTANT AND contrat.N_COD_NUMDIRECTION = direction.N_COD_NUMDIRECTION AND contrat.N_COD_NUMSIGNATURE = signature.N_COD_NUMSIGNATURE"
                ID="SqlDataSourceAll" runat="server">"></asp:SqlDataSource>                  
                </p>
    Malgré plusieurs test dans les évènements du GridView et du Bouton je suis toujours aussi embéter et je n'arrive toujours pas à récupérer la valeur de la cellule 0.

    Mon code behind est celui-ci
    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
     
    using System;
    using System.Data;
    using System.Configuration;
    using System.Collections;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Web.UI.HtmlControls;
    using System.Data.SqlClient;
     
    public partial class ShowAll : System.Web.UI.Page
    {
          private void Page_Load(Object sender, EventArgs e) 
          { 
          }
     
        public void BtnTest_OnClick(object sender, EventArgs e)
        {
        }
     
        public void gvContrat_OnRowCreated(object sender, EventArgs e)
        {
            //Label1.Text = ((TemplateField)((GridView)sender).Columns[15])
        }
     
        protected void gvContrat_OnRowCommand(object sender, EventArgs e)
        {
            //string val = ((GridView)sender).Rows[((GridView)sender).SelectedIndex].Cells[1].Text;
            Label1.Text = ((GridView)sender).Rows[(int)(((GridView)sender).SelectedDataKey.Value)].Cells[0].GetType().ToString();
        }
     
    }
    Et l'erreur rapportée la plupart du temps quand je test mes différentes fonctions, ou plutôt les différentes idées que j'ai pu avoir pour récupérer la valeur d'une cellule en parcourant le net est celle-ci :

    La référence d'objet n'est pas définie à une instance d'un objet.
    Ca fait déjà plusieurs jours que je planche la dessus, et impossible de trouver une solution.

    Merci d'avance pour votre aide, je me sens un peu désarmé.

  2. #2
    Membre éprouvé Avatar de beren.kei
    Inscrit en
    Mai 2008
    Messages
    135
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Mai 2008
    Messages : 135
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    protected void gvContrat_OnRowCommand(object sender, EventArgs e)
        {
            string val = gvContrat.Rows[Int32.Parse(e.CommandArgument)].Cells[0].Text;
        }
    ici e.CommandArgument c'est la ligne et Cells[0] récupère la première cellule de la ligne.

    voila j'espère que ca résoudra tes problèmes !

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    51
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Novembre 2009
    Messages : 51
    Par défaut
    Bonjour ^^

    Merci beaucoup de ton aide... J'ai du juste changer la fonction pour qu'elle soit comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
        protected void gvContrat_OnRowCommand(object sender, GridViewCommandEventArgs e)
        {
            string val = gvContrat.Rows[Int32.Parse(e.CommandArgument.ToString())].Cells[0].Text;
            Label1.Text = val;
        }
    Si ça peut aider quelqu'un un jour.

    Par contre, si ça ne te dérange pas de répondre à une question toute bète sans doute. Mais comment se fait-il que le CommandArgument renvoie un numéro de ligne ? Ou plutôt est-ce que le CommandArgument renvoie toujours le numéro de ligne ? Ca marche je suis content, mais c'est un peu surprenant ^^. Bref merci de ta réponse si rapide

    Bonne journée.

  4. #4
    Membre éprouvé Avatar de beren.kei
    Inscrit en
    Mai 2008
    Messages
    135
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Mai 2008
    Messages : 135
    Par défaut
    à ma connaissance il ne renvoit que le numéro de la ligne, mais comme c'est un objet c'est difficile à savoir...
    si tu as d'autres questions sur les gridview n'hésites pas !

  5. #5
    Membre averti
    Inscrit en
    Février 2009
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 15
    Par défaut tt simplement
    on peut faire tout simplement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    string s1 = GridView1.Rows[GridView1.SelectedIndex+1].Cells[ numero de la colonne ].Text;

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

Discussions similaires

  1. Récupérer valeur dans une cellule - insertion ligne
    Par userparis dans le forum Excel
    Réponses: 2
    Dernier message: 10/02/2014, 13h50
  2. [XL-2003] récupérer valeur d'une cellule, dans plusieurs fichiers placés dans des sous-dossiers
    Par greenfire15 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 07/08/2012, 09h42
  3. [Débutant] Récupérer valeur d'une cellule Excel
    Par Skice dans le forum VB.NET
    Réponses: 2
    Dernier message: 08/07/2011, 09h44
  4. Réponses: 1
    Dernier message: 11/03/2011, 12h46
  5. Récupérer la valeur d'une cellule d'un GridView
    Par The eye dans le forum VB.NET
    Réponses: 2
    Dernier message: 29/01/2008, 00h03

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