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# ASP]récupérer valeur champ gridView sans bouttons select


Sujet :

ASP.NET

  1. #1
    Membre averti
    Inscrit en
    Mai 2006
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 29
    Par défaut [C# ASP]récupérer valeur champ gridView sans bouttons select
    Bonjour,

    A partir d'une datasource j'affiche dans un gridview des données.
    En bas de ma page j'ai un boutton, et je voudrais que quand je clique dessus, un traitement soit fait sur chaque ligne du gridview
    J'ai donc fait une boucle "for" mais je n'arrive pas à récupérer la valeur de certains champs (les champs cachés en fait ) sans utiliser le boutton selected que le gridview permet d'afficher.

    Voici mon code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
        protected void terminer(object sender, EventArgs e)
        {
            for(int i = 0; i < GridView1.Rows.Count; i++){
                GridViewRow selectedRow = GridView1.Rows[i];
                TableCell table1 = selectedRow.Cells[0];
                string var1 = table1.Text;
            }
    Si je met le champ 0 en visible (visible=true), ma variable var1 va bien prendre le résultat qu'il contient, mais en non visible cela ne marche pas, cela ne prend que la valeur "". un petit peu d'aide me serait très utile svp .

    Autre petite question (pour la route), dans le code j'écrit Cells[0], c'est possible d'écrire une truc du genre Cells["Le nom de la colonne"], car si je change une colonne de place ca m'oblige à changer le code... pas tip top .

    D'avance merci pour votre aide!!

  2. #2
    Candidat au Club
    Profil pro
    Analyste de donnee
    Inscrit en
    Juin 2002
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Analyste de donnee

    Informations forums :
    Inscription : Juin 2002
    Messages : 4
    Par défaut
    comment je fais:
    je transforme le champ dont je dois extraire la données en templatefield. dans la modification des modeles je recupere le nom du conteneur d'affichage. par exemple si c'est un label nommé "Label1".
    ensuite je fais une iteration sur les lignes de la grille en recherchant le controle dans la ligne ,( ce qui permet de deplacer la colonne sans se soucier de son index dans Cell[]..)

    foreach(GridViewRow row in MaGridView.Rows)
    {
    Label MonChamp=(Label)row.FindControl("Label1");
    string MonContenu=MonChamp.Text;

    //Traitement

    }

    cela fonctionne même si la colonne est masquée...

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 54
    Par défaut
    Ayant le même problème, j'ai passé mon champ en templateField, il s'affiche correctement. Par contre je n'arrive toujours pas à le récuperer, le row.findControl me retourne null.

    Voila ma gridview:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <asp:GridView ID="SpecGridView" runat="server" Width="100%" EmptyDataText="####" Font-Names="Arial" Font-Size="Small" AutoGenerateColumns="False">
            <Columns>
                <asp:TemplateField HeaderText="ID">
                    <ItemTemplate>
                        <asp:Label ID="IdLbl" runat="server" text='<%#Eval("ID") %>' ></asp:Label>
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:BoundField DataField="Summary" HeaderText="Summary" HtmlEncode="False" />
            </Columns>
            </asp:GridView>
    et dans le code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    foreach (GridViewRow row in SpecGridView.Rows)
            {
                string specID = ((Label)row.FindControl("IdLbl")).Text;
             }
    J'ai un erreur car le row.FindControl retourne null, alors que j'ai correctement spécifié l'Id du label. Une idée pour me sortir de là svp ?

  4. #4
    Candidat au Club
    Profil pro
    Analyste de donnee
    Inscrit en
    Juin 2002
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Analyste de donnee

    Informations forums :
    Inscription : Juin 2002
    Messages : 4
    Par défaut
    et ta liaison de données? à mon avis à l'exécution ta grille affiche son emptydatatext( ####) , (la fonction FindControl recherche dans les lignes de la grille le contrôle passé en argument), si la grille est vide elle ne contient evidemment pas le contrôle donc ton code retourne null obligatoirement....
    n'oublie pas de faire un test de validité (if TonControle!=null)

Discussions similaires

  1. récupérer valeur champs séléctionné DataGridView
    Par psycho_xn dans le forum Général Dotnet
    Réponses: 5
    Dernier message: 08/07/2014, 14h10
  2. Récupérer valeur d'un champ gridView avec bouton select
    Par loubna_drime dans le forum ASP.NET
    Réponses: 0
    Dernier message: 20/05/2009, 22h32
  3. [PHP-JS] Récupérer valeur CHAMP
    Par Akim13 dans le forum Langage
    Réponses: 8
    Dernier message: 08/05/2008, 14h31
  4. récupérer valeur champ libre formulaire dans un état
    Par stagolee dans le forum VBA Access
    Réponses: 1
    Dernier message: 10/01/2008, 13h18
  5. Récupérer valeur champs de formulaire dynamique
    Par antillejj dans le forum ASP
    Réponses: 1
    Dernier message: 22/12/2006, 07h17

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