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 : Problèmes [Agencement + Conception]


Sujet :

ASP.NET

  1. #1
    Membre éclairé
    Avatar de betsprite
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    472
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 472
    Par défaut GridView : Problèmes [Agencement + Conception]
    Bonjour,

    J'aimerais créer un gridView tel que :

    - le gridView possède 3 colonnes que sont NomInterlocuteur et TypeInterlocuteur et Modifier (respectivement un textbox, un dropdrowlist, et un bouton)

    - un header avec un titre pour introduire le gridview.

    - un footer avec un bouton Ajouter qui ajoute après un clic une ligne vide au gridView à remplir par l'utilisateur.

    Seulement, j'ai plusieurs soucis :

    --> Problème d'agencement : Je n'arrive pas à modifier autres choses que le nombre de colonnes dans un gridView. Je n'arrive donc pas à inclure un header et footer dans mon gridView.

    --> Problème de conception :

    - Imaginons que mon gridView soit agencé comme voulu, initialement (avant ajout), les données du gridView sont nulles. Le gridView n'apparait donc pas et nous ne pourrons même pas cliquer sur le bouton "Ajouter" pour ajouter une première ligne vide à remplir.

    - Aussi, comment gérer l'ajout d'une ligne au clic sur le bouton Ajouter ?

    J'éspère que vous pourrez m'aider !

    Merci !

  2. #2
    Membre Expert
    Avatar de Nicolas Esprit
    Homme Profil pro
    Consultant en technologies
    Inscrit en
    Février 2010
    Messages
    1 467
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en technologies
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 1 467
    Par défaut
    Citation Envoyé par betsprite Voir le message
    --> Problème d'agencement : Je n'arrive pas à modifier autres choses que le nombre de colonnes dans un gridView. Je n'arrive donc pas à inclure un header et footer dans mon gridView.
    Un coup de HeaderTemplate et FooterTemplate et c'est réglé.

    Citation Envoyé par betsprite Voir le message
    --> Imaginons que mon gridView soit agencé comme voulu, initialement (avant ajout), les données du gridView sont nulles. Le gridView n'apparait donc pas et nous ne pourrons même pas cliquer sur le bouton "Ajouter" pour ajouter une première ligne vide à remplir..
    Pour afficher ta GridView malgré l'abscence de données, tu peux utiliser un EmptyDataTemplate.
    Ensuite, pour faire apparaître malgré tout ton Footer et donc ton bouton d'ajout, deux solutions : ajouter une ligne vide à ta DataSource, ou bien regarder sur Google les nombreux exemples de GridView customisée permettant de toujours rendre visible le header et / ou le footer. Il y a encore d'autres solutions.

    Citation Envoyé par betsprite Voir le message
    --> Aussi, comment gérer l'ajout d'une ligne au clic sur le bouton Ajouter ?
    En créant une nouvelle ligne dans ta DataSource et en bindant une nouvelle fois ta GridView ?

    En espérant t'avoir aidé.

  3. #3
    Membre éclairé
    Avatar de betsprite
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    472
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 472
    Par défaut
    Merci Nicolas pour ta réponse claire !

    Je vois à peu près comment m'y prendre mais j'ai encore un soucis :

    Quand j'essai d'ajouter dans ma page aspx la balise <HeaderTemplate>, j'ai une erreur :

    Erreur lors de la création du controle - gv_interlocuteurs
    Le type 'System.Web.UI.WebControls.GridView' ne possède pas de propriété publique appelée 'HeaderTemplate'.
    Si vous avez un moyen de résoudre ce problème ça m'aiderait pas mal

    (Pour information, je développe sous VS2008)

    Merci !

  4. #4
    Membre Expert
    Avatar de Nicolas Esprit
    Homme Profil pro
    Consultant en technologies
    Inscrit en
    Février 2010
    Messages
    1 467
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en technologies
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 1 467
    Par défaut
    Il faut apprendre à lire la documentation, je t'ai même fourni le lien.

    Je reprends exactement le code de l'exemple MSDN :

    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
    <asp:gridview id="AuthorsGridView" 
    datasourceid="AuthorsSqlDataSource" 
    autogeneratecolumns="False"
    width="250" 
    runat="server">
     
    <columns>
    <asp:templatefield>
    <headerstyle backcolor="Navy"
    forecolor="White"/>
    <itemtemplate>
    <%#Eval("au_fname")%>
    <%#Eval("au_lname")%>
    </itemtemplate>
    <headertemplate>
    <asp:checkbox id="ShowAllCheckBox"
    text="Show All"
    checked="True" 
    autopostback="true"
    oncheckedchanged="SelectAllCheckBox_CheckedChanged" 
    runat="server"/>
    </headertemplate>
    </asp:templatefield> 
    </columns>
     
    </asp:gridview>

  5. #5
    Membre éclairé
    Avatar de betsprite
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    472
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 472
    Par défaut
    Désolé Nicolas, l'écriture du lien était trop petite pour moi je ne pouvais pas lire :s

    Ok je comprends mieux.

    Seulement, encore quelque chose m'échappe. Malgré ce code, je n'arrive pas à faire des lignes...

    Par là, je veux dire que, par analogie aux listes avec les balises <tr> pour les lignes et <td> pour les colonnes, ici, je n'arrive pas à faire une nouvelle ligne pour le "footer". Le footertemplate se met dans une nouvelle colonne alors que je voudrais le voir apparaître en bas du gridView...

    Merci !

  6. #6
    Membre éclairé
    Avatar de betsprite
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    472
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 472
    Par défaut
    Bonjour,

    je suis toujours bloqué sur la création de mon gridview malgré mes recherches :s

    Voici mon 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
    <asp:gridView showfooter="true" runat="server" width="100%" id="gv_interlocuteurs" autogeneratecolumns="false">
    <columns>
    <asp:templatefield headertext="Nom">
    <itemtemplate>
    </itemtemplate>
    <footertemplate>
    <asp:button id="btn_ajouter" runat="server" text="Ajouter" />
    </footertemplate>
    </asp:templatefield>
    <asp:templatefield headertext="Type">
    <itemtemplate>
    </itemtemplate>
    </asp:templatefield>
    </columns>
    </asp:gridView>
    Mon problème étant que je n'arrive pas à lier les deux colonnes (sans le footer avec le bouton ajouter) à ma source de données.

    En fait, mon objectif est d'avoir un tableau avec :

    - En haut un titre (header) qui est "interlocuteurs"

    - 2 colonnes NOM, TYPE (avec dans NOM un champ textbox a remplir et dans TYPE un dropdrowlist avec le choix entre "technique" et "fonctionnel")

    - Un footer avec un bouton "Ajouter" pour ajouter une ligne à remplir dans le gridview.

    (Au début, il y aurait une seule ligne vide à remplir avant toute insertion).

    J'éspère que vous pourrez m'éclairer !

    Merci beaucoup !

  7. #7
    Membre éclairé
    Avatar de betsprite
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    472
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 472
    Par défaut
    Bonjour,

    j'ai finalement avancé sur la conception de mon gridView.

    Cependant, j'ai un petit souci concernant l'implémentation des commandes Delete et Edit.

    Voici par exemple ma méthode gv_interlocuteurs_DeleteCommand :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Private Sub gv_interlocuteurs_DeleteCommand(ByVal source as Object, ByVal e As System.Web.UI.WebControls.GridViewDeleteEventArgs) Handles gv_interlocuteurs.RowDeleting
     
    Try
    CInterlocuteur.Delete(CInt(gv_interlocuteurs.DataKeys.Item(e.RowIndex)))
    BindingInterlocuteur()
    LBL_MSG_ERROR.AfficherMessageDErreur("")
    Catch ex As Exception
    LBL_MSG_ERROR.AfficherMessageDErreur(ex.Message)
    End Try
     
    End Sub
    Avec la méthode BindingInterlocuteur() :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub BindingInterlocuteur()
     
    Dim dsData As New DataSet
    dsData = ...GetExecuteQuerySQL("***_GetInterlocuteur", New SqlParameter("@idApplication", 5)) 
    gv_interlocuteurs.DataSource = dsData
    gv_interlocuteurs.DataBind()
     
    End Sub
    Avec CInterlocuteur.vb faisant la liaison avec les paramètres de la base de données.

    Seulement, j'ai l'erreur suivante :

    Une valeur de type 'System.Web.UI.WebControls.DataKey' ne peut pas être convertie en Integer
    - Concernant ce problème, je ne comprends pas bien déjà ce que permet le DataKey (c'est un bout de code à reprendre).

    Si vous avez des idées n'hésitez pas

    Merci !

  8. #8
    Membre Expert
    Avatar de Nicolas Esprit
    Homme Profil pro
    Consultant en technologies
    Inscrit en
    Février 2010
    Messages
    1 467
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en technologies
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 1 467
    Par défaut
    Bonjour,

    Une DataKey est à considérer comme une clé primaire d'une ligne dans les données d'un contrôle tel que GridView. Cela permet de spécifier une ligne de façon unique.

    Sinon, quand tu reprends un code source trouvé sur le net, il faut quand même penser à te documenter un peu. Tu aurais ainsi pu, en regardant la doc sur DataKey, qu'il faut utiliser DataKey.Value.

    En espérant t'avoir aidé.

  9. #9
    Membre éclairé
    Avatar de betsprite
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    472
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 472
    Par défaut
    Merci Nicolas !

    Oui j'avais pensé à atteindre la définition de chaque terme utilisé, seulement, cetrains ne sont pas proposés.

    Ainsi, en tapant "DataKey." et en regardant les méthodes proposées, je ne trouve pas de "value()".

    Il me reste donc les problèmes suivants :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    CInterlocuteur.Delete(CInt(gv_interlocuteurs.DataKeys.Item(e.RowIndex)))
    ...
    Avec l'erreur :

    une valeur de type 'System.Web.UI.WebControls.DataKey' ne peut pas être convertie en Integer
    Mais aussi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim TxtLibelle As TextBox = CType(e.Item.Cells(0).Controls(1), TextBox)
    Avec l'erreur :
    item n'est pas membre de 'System.Web.UI.WebControls.GridViewUpdateEventArgs'
    Je continue mes recherches !

    Si jamais vous avez des idées je suis là

    Merci encore !

  10. #10
    Membre Expert
    Avatar de Nicolas Esprit
    Homme Profil pro
    Consultant en technologies
    Inscrit en
    Février 2010
    Messages
    1 467
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en technologies
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 1 467
    Par défaut
    Citation Envoyé par betsprite Voir le message
    Merci Nicolas !

    Oui j'avais pensé à atteindre la définition de chaque terme utilisé, seulement, cetrains ne sont pas proposés.

    Ainsi, en tapant "DataKey." et en regardant les méthodes proposées, je ne trouve pas de "value()".
    Faut pas trop pousser non plus....

    http://msdn.microsoft.com/fr-fr/libr...(v=VS.80).aspx !!!!!

  11. #11
    Membre éclairé
    Avatar de betsprite
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    472
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 472
    Par défaut
    Faut pas trop pousser non plus....
    Hum écoutes, j'ai réellement cherché la méthode mais le problème c'est qu'elle n'était pas visible, peut être à cause du type d'événement envisagé...

    Bref j'ai réglé mon problème...

    Merci

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

Discussions similaires

  1. Méthode Finalize et problème de conception
    Par phryos dans le forum Langage
    Réponses: 4
    Dernier message: 19/04/2006, 11h04
  2. [VB6][UserControl et OCX]Problème de conception
    Par jacma dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 19/01/2006, 22h37
  3. Petit problème de conception sur access
    Par coooookinette dans le forum Modélisation
    Réponses: 3
    Dernier message: 18/12/2005, 18h24
  4. Gestion des départements problème de conception
    Par snoopy69 dans le forum Modélisation
    Réponses: 7
    Dernier message: 11/10/2005, 13h08
  5. Problème de conceptions de tables
    Par dtavan dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 23/05/2004, 23h13

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