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 :

Modifier les données d'un GridView [Débutant]


Sujet :

ASP.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Octobre 2009
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 33
    Par défaut Modifier les données d'un GridView
    Bonjour,
    Je voudrais modifier directement des données (deux colonne cases à cocher) dans un GridView, mais celui-ci s'affiche uniquement en visualisation, il n'est pas possible de cliquer sur les cases à cocher.
    J'utilise Visual Studio 2008.
    Je crée le GridView en mode design, dans la source, cela me donne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
      <asp:GridView ID="ListInter" runat="server" AllowPaging="True" PageSize="8">
                                <AlternatingRowStyle BackColor="#CCCCCC" />
      </asp:GridView>
    Sur page Load, je définie un datatable pour stocker les différents critères...

    Code VB.NET : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
                DtResult = New System.Data.DataTable
                'Ajoute les critères à la liste
                DtResult.Columns.Add("N°", Type.GetType("System.String"))
                DtResult.Columns.Add("Gardien", Type.GetType("System.String"))
                DtResult.Columns.Add("Locataire", Type.GetType("System.String"))
                DtResult.Columns.Add("Motif", Type.GetType("System.String"))
                DtResult.Columns.Add("Date", Type.GetType("System.String"))
                DtResult.Columns.Add("Facturer", Type.GetType("System.Boolean"))
                DtResult.Columns.Add("Visa", Type.GetType("System.Boolean"))
     
                'Lien datatable grille: pour afficher le contenu de cette table
                Me.ListInter.DataSource = DtResult
                Me.ListInter.DataBind()

    Je rempli mon datatable en vb via un select en SQL et j'actualise le GridView avec la fonction DataBind:

    Code VB.NET : 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
            Dim cmdVInter = New OleDbCommand(StrSQL, cnt)
            Dim DrVinter As OleDbDataReader
     
            Dim NouvRow As Data.DataRow = DtResult.NewRow
     
            DrVinter = cmdVInter.ExecuteReader
            DtResult.Clear()
            While DrVinter.Read
                NouvRow("N°") = Nz(DrVinter("N°"))
                NouvRow("Gardien") = Nz(DrVinter("LibUser"))
                NouvRow("Locataire") = Nz(DrVinter("NomLoc"))
                NouvRow("Date") = Nz(DrVinter("DateInter"))
                NouvRow("Motif") = Nz(DrVinter("LibMotif"))
                NouvRow("Facturer") = Nz(DrVinter("Facturer"))
                NouvRow("Visa") = Nz(DrVinter("VisaChef"))
     
                DtResult.Rows.Add(NouvRow)
                NouvRow = DtResult.NewRow
            End While
     
            'Lien datatable grille
            Me.ListInter.DataSource = DtResult
            Me.ListInter.DataBind()

    Je souhaiterai pouvoir modifier les 2 dernières colonnes qui sont des cases à cocher, mais à l'exécution, elles ne me sont pas accessibles.

    J'ai cherché sur le net, mais rien trouvé qui puisse me faire avancer.

    Merci de votre aide.

  2. #2
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2005
    Messages
    165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Novembre 2005
    Messages : 165
    Par défaut
    Bonjour,

    Test 2 colonnes "case à cocher" sont bien "Facturer" et "Visa" ?
    Comme tu les as définies, il me semble que c'est du pure affichage (le gridview affiche le boolean retournée par ton SQL), il faut que tu définisses autrement tes 2 colonnes.

    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
    <asp:GridView ID="ListInter" runat="server" AllowPaging="True" PageSize="8">
       <asp:BoundField HeaderText="N°" DataField="Remettant"   />
       <asp:BoundField HeaderText="Gardien" DataField="Remettant"   />
       <asp:BoundField HeaderText="Locataire" DataField="Remettant"  />
       <asp:BoundField HeaderText="Motif" DataField="Remettant"  />
       <asp:BoundField HeaderText="Date" DataField="Remettant"  />
     
       <asp:TemplateField>
          <HeaderTemplate>Labla</HeaderTemplate>
          <ItemTemplate>
             <asp:CheckBox runat="server" id="ckbFacturer" />
          </ItemTemplate>
       </asp:TemplateField>
     
       <asp:TemplateField>
          <HeaderTemplate>Labla</HeaderTemplate>
          <ItemTemplate>
             <asp:CheckBox runat="server" id="ckbFacturer" />
          </ItemTemplate>
       </asp:TemplateField>
    </asp:GridView>

    Il faudra que tu remplaces "DataField" pour chaque colonne pour le nom de la colonne retournée par ton SQL.

    Normalement, comme ça tu as des cases à cocher que tu peux cocher.
    A toi d'ajouter le comportement.


    Seb

  3. #3
    Membre averti
    Inscrit en
    Octobre 2009
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 33
    Par défaut
    Merci pour ta réponse, j'ai réussi à ajouter une colonne de cases à cocher dans le GridView.
    (Oui, mes cases à cocher sont bien Facturer et Visa).

    Pour faire plus simple, j'ai conservé que 2 champs:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
                            <asp:GridView ID="ListInter" runat="server" AllowPaging="True" PageSize="8" AutoGenerateColumns="False">
                                <Columns>
                                    <asp:BoundField DataField="N°" HeaderText="Num"/>
                                    <asp:TemplateField>
                                      <HeaderTemplate>Facturer</HeaderTemplate>
                                      <ItemTemplate>
                                         <asp:CheckBox runat="server" id="CkbFacturer" />
                                      </ItemTemplate>
                                        <ItemStyle HorizontalAlign="Center" />
                                   </asp:TemplateField>
                                </Columns>
                                <AlternatingRowStyle BackColor="#CCCCCC" />
                            </asp:GridView>
    Par contre, peux-tu me dire comment faire pour que les valeurs affichées des cases à cocher soient celles renvoyées par ma requête SQL ?

    Je crois que je vais avoir aussi des soucis pour déterminer quel enregistrement est modifié lors du clique sur une case à cocher et comment appeler une procédure lors du clique...

    Enfin si tu peux m'aider ou si tu as un exemple c'est sympa.

  4. #4
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2005
    Messages
    165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Novembre 2005
    Messages : 165
    Par défaut
    Pour cocher ou pas tes checkBox, essaye ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Checked="<%# Eval("Visa") %>"
    Après pour réaliser une action sur le changement d'état de tes cases à chose, pour moi cela dépend si tu souhaites gérer ça de façon unitaire ou en groupe.

    En groupe, le plus simple serait de jouer avec JS, un HiddenField avec la liste des lignes changées (l'ID de ta ligne en base par ex) et un bouton pour le postBack de la page.
    Unitairement, as-tu essayer t'implémenter l'évènement "OnClick" du checkBox ?



    Seb

  5. #5
    Membre averti
    Inscrit en
    Octobre 2009
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 33
    Par défaut
    J'ai ramené les valeurs avec 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
                            <asp:GridView ID="ListInter" runat="server" AllowPaging="True" PageSize="8" AutoGenerateColumns="False">
                                <Columns>
                                    <asp:BoundField DataField="N°" HeaderText="Num"/>
                                    <asp:TemplateField>
                                      <HeaderTemplate>Facturer</HeaderTemplate>
                                      <ItemTemplate>
                                         <asp:CheckBox runat="server" id="CkbFacturer" Checked='<%# Eval("Facturer") %>' OnCheckedChanged="Facturer" AutoPostBack="true"/>
                                      </ItemTemplate>
                                        <ItemStyle HorizontalAlign="Center" />
                                   </asp:TemplateField>
                                </Columns>
                                <AlternatingRowStyle BackColor="#CCCCCC" />
                            </asp:GridView>

    L'événement OnCheckedChanged est écrit sur la feuille aspx dont voici le début (juste pour pouvoir tester que le code fonctionne):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <%@ Page Language="VB" MasterPageFile="~/MasterPage.master" AutoEventWireup="false" CodeFile="ValidationInter.aspx.vb" Inherits="Default2" title="Page sans titre" %>
     
    <script  runat="server">
        Sub Facturer()
            Me.TxtInfo.Visible = True
        End Sub
    </script>
     
     
    <asp:Content ID="Content1" ContentPlaceHolderID="head" Runat="Server">
    Et cela fonctionne.
    Les valeurs sont bien ramenées même avec la pagination et lors du click sur une case à cocher, le texte s'affiche.
    Il me reste plus qu'à déterminer le n° de la ligne pour pouvoir ensuite faire des update dans la base.

    Je suis issu du vb (client lourd), alors c'est pas évident pour moi tout se qui se trouve sur la page aspx et encore moins javascript...

    Un grand merci à toi Seb.

  6. #6
    Membre averti
    Inscrit en
    Octobre 2009
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 33
    Par défaut
    C'est bien ce qui me semblait, je n'arrive pas à retourner le n° de la ligne dont la case a été coché (je veux gérer cela de façon unitaire, c'est plus clair et simple pour moi).
    J'ai mis la procédure Facturer sur la page .vb

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
        Public Sub Facturer()
     
            Me.TxtInfo.Text = "Je voudrais mettre le numéro de la ligne modifiée ici"
            Me.TxtInfo.Visible = True
     
        End Sub
    Tu aurais une idée ?

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

Discussions similaires

  1. [Débutant] modifier les données d'une gridview à travers une FormView
    Par Alexandre le Grand dans le forum Entity Framework
    Réponses: 0
    Dernier message: 04/03/2014, 11h06
  2. modifier les données d'une gridview
    Par SALIA LOUA OLIVIER dans le forum Débuter
    Réponses: 3
    Dernier message: 20/10/2009, 07h55
  3. comment modifier les données d'une table à travers un dbgrid
    Par bertrand_declerck dans le forum Bases de données
    Réponses: 12
    Dernier message: 19/07/2005, 09h51
  4. MySQL Administrator : modifier les données d'une table
    Par Robinounou dans le forum Outils
    Réponses: 4
    Dernier message: 13/07/2005, 17h21
  5. [Crystal Reports 10] Modifier les données d'un état
    Par jidea dans le forum SAP Crystal Reports
    Réponses: 2
    Dernier message: 17/08/2004, 18h16

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