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 :

GridView > RowDataBound + TemplateField, comment binder mes données


Sujet :

ASP.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de kohsaka
    Homme Profil pro
    Intégrateur HTML / Developpeur .NET
    Inscrit en
    Janvier 2007
    Messages
    383
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Intégrateur HTML / Developpeur .NET

    Informations forums :
    Inscription : Janvier 2007
    Messages : 383
    Par défaut GridView > RowDataBound + TemplateField, comment binder mes données
    Bonjour,

    je decouvre un peu l'utilisation du GridView, et j'ai du mal à mettre mes données dans les templates que j'ai défini.

    concrètement, j'ai ceci :
    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
     
    protected override void OnLoad(EventArgs e)
    {
       this.gvTest.DataSource = MyTable();
       this.gvTest.DataBind();
    }
     
    private DataTable MyTable()
    {
      DataTable myTable = new DataTable();
     
      myTable.Columns.Add("ID", typeof(Int32));
      myTable.Columns.Add("Gender", typeof(String));
      myTable.Columns.Add("Name", typeof(String));
     
      myTable.Rows.Add(687861, "Male", "Guy");
      myTable.Rows.Add(456878, "Unknown", "John");
      myTable.Rows.Add(867867, "Unknown", "Ely");
      myTable.Rows.Add(558757, "Female", "Sarah");
     
      return myTable;
    }
    Ensuite, à l'appelle de mon RowDataBound, j'ai un début de code, mais je ne sais pas comment accéder aux données que j'ai mise dans le DataSource (j'ai épuré un peu le code).
    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
     
    void gvTest_RowDataBound(object sender, GridViewRowEventArgs e)
            {
                if (e.Row.RowType == DataControlRowType.Header)
                {
                    Literal lIdTitle = (Literal)e.Row.FindControl("lIdTitle");
                    lIdTitle.Text = "test1"; // j'aimerais mettre le nom de ma colonne
                }
     
                if (e.Row.RowType == DataControlRowType.DataRow)
                {
                    Literal lIdData = (Literal)e.Row.FindControl("lIdData");
                    lIdData.Text = "test"; // pareil ici avec la bonne valeur
                }
            }
    et juste pour info voici mon code aspx
    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
     
    <asp:GridView ID="gvTest" Width="100%" AutoGenerateColumns="false" AllowSorting="true" EmptyDataText="aucune données" runat="server">
                    <Columns>
                        <asp:TemplateField>
                            <HeaderTemplate>
                                <p><a href="#"></a></p>
                                <h3><asp:Literal ID="lIdTitle" runat="server" /></h3>
                            </HeaderTemplate>
                            <ItemTemplate>
                                <asp:Literal ID="lIdData" runat="server" />
                            </ItemTemplate>
                        </asp:TemplateField>
                        <asp:TemplateField>
                            <HeaderTemplate>
                                <p><a href="#"></a></p>
                                <h3><asp:Literal ID="lGenderTitle" runat="server" /></h3>
                            </HeaderTemplate>
                            <ItemTemplate>
                                <asp:Literal ID="lGenderData" runat="server" />
                            </ItemTemplate>
                        </asp:TemplateField>
                        <asp:TemplateField>
                            <HeaderTemplate>
                                <p><a href="#"></a></p>
                                <h3><asp:Literal ID="lNameTitle" runat="server" /></h3>
                            </HeaderTemplate>
                            <ItemTemplate>
                                <asp:Literal ID="lNameData" runat="server" />
                            </ItemTemplate>
                        </asp:TemplateField>
                    </Columns>
                </asp:GridView>

  2. #2
    Membre émérite Avatar de Ramajb
    Homme Profil pro
    ----------------------------
    Inscrit en
    Septembre 2007
    Messages
    476
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : ----------------------------

    Informations forums :
    Inscription : Septembre 2007
    Messages : 476
    Par défaut
    Salut,

    Avec le code que tu as actuellement, c'est pas bon?

    A+

  3. #3
    Membre éclairé Avatar de kohsaka
    Homme Profil pro
    Intégrateur HTML / Developpeur .NET
    Inscrit en
    Janvier 2007
    Messages
    383
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Intégrateur HTML / Developpeur .NET

    Informations forums :
    Inscription : Janvier 2007
    Messages : 383
    Par défaut
    le code que je fourni est bon, en tout cas il compile
    Mais mon problème se situe plus à ce niveau ci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    lIdTitle.Text = "test1";
    A la place de "test1", j'aimerais parcourir la liste de données que je lui ai attaché, avec quelque chose comme ce que j'avais dans un repeater :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    lIdTitle.Text = e.item.dataItem...
    Il y a bien "e.Row.DataItem" mais après il ne me propose que .Equals, .GetHashCode, .GetType et .ToString

  4. #4
    Membre éclairé Avatar de kohsaka
    Homme Profil pro
    Intégrateur HTML / Developpeur .NET
    Inscrit en
    Janvier 2007
    Messages
    383
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Intégrateur HTML / Developpeur .NET

    Informations forums :
    Inscription : Janvier 2007
    Messages : 383
    Par défaut
    J'ai trouvé un élément de réponse :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        Literal lIdData = (Literal)e.Row.FindControl("lIdData");
        lIdData.Text = DataBinder.Eval(e.Row.DataItem, "ID").ToString();
    }
    Avec ce code j'arrive à remplir mon tableau mais je ne sais toujours pas comment récupérer les titres de mes colonnes.

  5. #5
    Membre actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    89
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Avril 2011
    Messages : 89
    Par défaut
    Pour utiliser un control dans un gridview, il te faut utiliser la commande findControl.
    Par exemple, pour acceder a un label contenu dant un gridview appele gvQuestion, personnelement je fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Label lblId = (Label)gvQuestion.FindControl("lblId");
    string strId=lblId.Text;

  6. #6
    Membre éclairé Avatar de kohsaka
    Homme Profil pro
    Intégrateur HTML / Developpeur .NET
    Inscrit en
    Janvier 2007
    Messages
    383
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Intégrateur HTML / Developpeur .NET

    Informations forums :
    Inscription : Janvier 2007
    Messages : 383
    Par défaut
    Citation Envoyé par nid4mail Voir le message
    Pour utiliser un control dans un gridview, il te faut utiliser la commande findControl.
    Par exemple, pour acceder a un label contenu dant un gridview appele gvQuestion, personnelement je fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Label lblId = (Label)gvQuestion.FindControl("lblId");
    string strId=lblId.Text;
    Merci de ton aide, mais ça ne répond pas à ma problématique

    PS : j'ai l'impression de pas avoir était très clair dans mes propos, désolé.

  7. #7
    Membre actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    89
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Avril 2011
    Messages : 89
    Par défaut
    Pour les colonnes, j'utilise dans le fichier *.aspx:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <asp:TemplateField HeaderText="Id" Visible="true">
                            <HeaderStyle Width="1%" />
                            <ItemTemplate>
                                <asp:Label ID="lblId" runat="server" Text='<%# Bind("Id") %>' CssClass="sondage"></asp:Label>
                            </ItemTemplate>
                            <ItemStyle HorizontalAlign="left" />
                        </asp:TemplateField>
    en esperant que cela puisse t'aider...

Discussions similaires

  1. Réponses: 4
    Dernier message: 03/12/2007, 14h58
  2. Comment récupérer mes données ou ma partition
    Par pierrot10 dans le forum Windows XP
    Réponses: 1
    Dernier message: 28/08/2007, 10h38
  3. Réponses: 10
    Dernier message: 05/06/2007, 16h53
  4. [SOLARIS] Comment partager mes données Windows?
    Par katou dans le forum Solaris
    Réponses: 1
    Dernier message: 13/04/2007, 13h31
  5. Comment stocker mes données coté serveur ?
    Par formentor dans le forum Servlets/JSP
    Réponses: 5
    Dernier message: 19/12/2006, 12h23

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