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 :

[VB.Net 2.0] Comment faire la mise à jour de données avec un GridView ?


Sujet :

ASP.NET

  1. #1
    Membre du Club
    Inscrit en
    Juillet 2006
    Messages
    112
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 112
    Points : 62
    Points
    62
    Par défaut [VB.Net 2.0] Comment faire la mise à jour de données avec un GridView ?
    Bonjour,

    j'ai créée une GridView qui est branché sur un datatset car ma source de données peut-être aussi bien Oracle que Sql.
    Je charge les données dans le GridView de la façon suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    _dataset = DB.ExecuteDataset(CommandType.Text, "SELECT ID_ACTION, CODE_ACTION, DESI_ACTION, VISE FROM " & PreFixe & "ACTIONS ORDER BY CODE_ACTION")
    GridView1.DataSource = _dataset
    GridView1.DataBind()
    J'ai défini ma GridView de la façon suivante
    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
    <asp:GridView ID="GridView1" runat="server" AllowPaging="True" AllowSorting="True"
    AutoGenerateColumns="False" CellPadding="4" DataKeyNames="ID_ACTION" 
    ForeColor="#333333" GridLines="None">
       <FooterStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
       <Columns>
          <asp:CommandField ShowDeleteButton="True" ShowEditButton="True" ShowSelectButton="True" />
          <asp:BoundField DataField="ID_ACTION" HeaderText="ID" InsertVisible="False" ReadOnly="True" SortExpression="ID_ACTION"/>
          <asp:BoundField DataField="CODE_ACTION" HeaderText="Code" SortExpression="CODE_ACTION" />
          <asp:BoundField DataField="DESI_ACTION" HeaderText="Desi" SortExpression="DESI_ACTION" />
          <asp:BoundField DataField="VISE" HeaderText="Vise" SortExpression="VISE"/>
       </Columns>
       <RowStyle BackColor="#EFF3FB" />
       <EditRowStyle BackColor="#2461BF" />
       <SelectedRowStyle BackColor="#D1DDF1" Font-Bold="True" ForeColor="#333333" />
       <PagerStyle BackColor="#2461BF" ForeColor="White" HorizontalAlign="Center" />
       <HeaderStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
       <AlternatingRowStyle BackColor="White" />
    </asp:GridView>
    Je dois gérér manuellement toutes les mises à jours sur mes données, je vais utiliser des procédures stockées.
    J'ai voulu m'attaquer à l'Update mais je suis fasse à un problème.
    Lorsque je suis dans l'évenement GridView1_RowUpdating, je n'ai pas accès à mes anciennes valeurs (e.OldValues) et à mes nouvelles (e.NewValues), ce qui semble t'il est normal car c'est du remplissage dynamique.
    J'ai donc essayé avec
    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
    Protected Sub GridView1_RowUpdating(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewUpdateEventArgs) Handles GridView1.RowUpdating
    Dim cell As DataControlFieldCell
    Dim i As Integer
    For i = 1 To 4
       cell = CType(GridView1.Rows(e.RowIndex).Cells(i), DataControlFieldCell)
       GridView1.Columns(i).ExtractValuesFromCell(e.OldValues, cell, DataControlRowState.Edit, True)
    Next
    For Each key As String In e.OldValues.Keys
       MsgBox(e.OldValues(key) & " -- " & key)
    Next
    GridView1.DataSource = _dataset
    GridView1.DataBind()
    For i = 1 To 4
       cell = CType(GridView1.Rows(e.RowIndex).Cells(i), DataControlFieldCell)
       GridView1.Columns(i).ExtractValuesFromCell(e.NewValues, cell, DataControlRowState.Edit, True)
    Next
    For Each key As String In e.NewValues.Keys
       MsgBox(e.NewValues(key) & " -- " & key)
    Next
    Je récupère toujours les anciennes valeurs et pas les nouvelles !!!
    Merci par avance de votre aide.

  2. #2
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 171
    Points : 122
    Points
    122
    Par défaut
    Et si tu faisais tout ton traitement dans le catch de l'événement "RowUpdated" et non "RowUpdating" ... ? C'est mieux ?

  3. #3
    Membre du Club
    Inscrit en
    Juillet 2006
    Messages
    112
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 112
    Points : 62
    Points
    62
    Par défaut
    Bonjour,

    apparement en fait on ne peut pas récupérer les e.OldValues et les e.NewValues du fait que le remplissage est dynamique.
    J'avais oublié de tester le PostBack sur le Load donc mes données étaient rechargées à chaque fois
    Après correction de cette boulette, j'ai utilisé le bout de code suivant pour alimenter moi même les e.NewValues
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Dim cell As DataControlFieldCell
    Dim maxCols As Integer = GRDV_ACTIONS.Columns.Count - 1
        'Récupération de toutes les valeurs des colonnes de la grille
        For i As Integer = 1 To maxCols
            cell = CType(GRDV_ACTIONS.Rows(e.RowIndex).Cells(i), DataControlFieldCell)
            GRDV_ACTIONS.Columns(i).ExtractValuesFromCell(e.NewValues, cell, DataControlRowState.Edit, True)
        Next

  4. #4
    Membre régulier Avatar de dv-2008
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    240
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 240
    Points : 118
    Points
    118
    Par défaut
    merci bcp pour ce bout de code
    ça fait très très longtemps que cherche à manipuler manuellement mon gridview et la c bon j'y suis

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

Discussions similaires

  1. Comment faire les mises a jour de mon site
    Par halimux dans le forum Débuter
    Réponses: 1
    Dernier message: 18/05/2009, 14h29
  2. Réponses: 13
    Dernier message: 02/09/2007, 12h15
  3. Réponses: 1
    Dernier message: 10/06/2007, 08h22
  4. comment mettre des mises a jour de données
    Par Asmod_D dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 16/03/2007, 17h36
  5. [Vs.Net & SQL Serveur] Comment faire fonctionner le Débu
    Par MoTUmBo dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 31/08/2005, 20h23

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