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 :

Update ne marche plus après avoir ajouté un Insert dans un Gridview


Sujet :

ASP.NET

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 63
    Points : 44
    Points
    44
    Par défaut Update ne marche plus après avoir ajouté un Insert dans un Gridview
    Bonjour à tous,

    J'utilise un gridview pour gérer une BDD Access pour l'instant.
    Les Update et Delete fonctionnaient bien.
    J'ai ajouté un Insert sur la ligne du Footer et depuis l'UPdate ne marche plus.
    (par contre Insert fonctionne bien).
    Voici des bouts de 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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
     
                        <asp:CommandField ShowEditButton="True" />
                        <asp:TemplateField HeaderText="No ID" SortExpression="id">
                            <ItemTemplate>
                                <asp:Label ID="diplomeID" runat="server" Text='<%# Bind("id") %>'></asp:Label>
                            </ItemTemplate>
                            <FooterTemplate>
                                <asp:Button ID="AjoutDip" Text="Ajouter" ValidationGroup="Ajout" 
                                            runat="server" onclick="InsertDip" />                                
                            </FooterTemplate>
                        </asp:TemplateField>
                        <asp:TemplateField HeaderText="Libellé" SortExpression="libelle">
                            <ItemTemplate>
                                <asp:Label ID="Libel" runat="server" Text='<%# Bind("libelle") %>'></asp:Label>
                            </ItemTemplate>
                            <FooterTemplate>
                                <asp:TextBox ID="NewLibelle" ValidationGroup="Ajout" runat="server"></asp:TextBox>
                                <asp:RequiredFieldValidator ID="RequiredFieldValidatorNewLib" ValidationGroup="Ajout" 
                                    runat="server" ControlToValidate="NewLibelle" Display="Dynamic" 
                                    ForeColor="Red" ErrorMessage="Le libellé est obligatoire.">
                                      * </asp:RequiredFieldValidator>                            
                            </FooterTemplate>
                            <FooterStyle Wrap="false" />
                        </asp:TemplateField>
     
    ...
     
                  <asp:SqlDataSource ID="SqlDataSourceDip" Runat="server" 
                    SelectCommand="SELECT [id], [libelle], [libellelong] FROM [diplome]"
                    InsertCommand="INSERT into diplome (libelle, libellelong) values (@NewLibelle, @NewLibellelong)"
                    UpdateCommand="UPDATE [diplome] SET [libelle] = @libelle, [libellelong] = @libellelong WHERE [id] = @id"
     
    ...
     
                    <InsertParameters>
                        <asp:Parameter Name="NewLibelle"/>
                        <asp:Parameter Name="NewLibellelong"/>                    
                    </InsertParameters>
                    <DeleteParameters>
                        <asp:Parameter Name="diplomeID" />
                    </DeleteParameters>          
                    <UpdateParameters>
                        <asp:Parameter Name="libelle"/>
                        <asp:Parameter Name="id" />
                    </UpdateParameters>
                  </asp:SqlDataSource>
    ...
    et dans le .cs :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
        protected void InsertDip(object sender, EventArgs e)
        {
            TextBox newlibtxt = (TextBox)GVDiplomes.FooterRow.FindControl("NewLibelle");
            SqlDataSourceDip.InsertParameters["NewLibelle"].DefaultValue = newlibtxt.Text;
            TextBox newliblongtxt = (TextBox)GVDiplomes.FooterRow.FindControl("NewLibellelong");
            SqlDataSourceDip.InsertParameters["NewLibellelong"].DefaultValue = newliblongtxt.Text;
     
            SqlDataSourceDip.Insert();
        }
    D'où peut bien venir le problème ?
    J'espère avoir été clair dans mes explications.

    Merci pour vos réponses.

  2. #2
    Membre éclairé
    Inscrit en
    Septembre 2007
    Messages
    1 137
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 137
    Points : 707
    Points
    707
    Par défaut
    Tu n'aurais pas oublié de définir des paramètres dans le sqlDataSource au niveau du UpdateParameter???

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 63
    Points : 44
    Points
    44
    Par défaut
    fausse joie.
    j'ai en effet ajouté un paramètre mais ça ne change rien.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
                    <UpdateParameters>
                        <asp:Parameter Name="libelle"/>
                        <asp:Parameter Name="libellelong"/>                                    
                        <asp:Parameter Name="id" />
                    </UpdateParameters>
                  </asp:SqlDataSource>
    il doit encore manquer un petit quelque chose ...

  4. #4
    Membre éclairé
    Inscrit en
    Septembre 2007
    Messages
    1 137
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 137
    Points : 707
    Points
    707
    Par défaut
    Et en ce qui concerne le delate, tu fais deleteparameter alors que tu n'as pas de deletecommand

  5. #5
    Membre éclairé
    Inscrit en
    Septembre 2007
    Messages
    1 137
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 137
    Points : 707
    Points
    707
    Par défaut
    Sinon va également voir les tutoriaux au niveau des gridview car je pense que tu n'as pas encore saisie la puissance d'un controle de ce type et son utilité

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 63
    Points : 44
    Points
    44
    Par défaut
    le Delete existe bien, c'est parce que je n'avais pas mis tout le code.
    j'ai bien trouvé les tutos utiles et je m'en inspire.
    et j'ai aussi compris la puissance du gridview.
    je veux tout simplement faire update/delete/insert le tout en un pour de simples tables. Le Insert avec un Form de saisie à part, ce sera pour les tables avec plus d'informations à saisir.
    Là, c'est le fait d'avoir ajouté un Insert qui "neutralise" mon Update (j'ai bien Enregistrer/Annuler qui apparait mais je ne peux pas saisir, j'ai pas le focus !).
    le Update seul marche, le Insert marche, le combiné des 2 ne marche pas.
    Voilà mon problème.
    Il doit y avoir un écrou quelque part que je n'ai pas serré mais lequel ?

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 63
    Points : 44
    Points
    44
    Par défaut
    J'ai trouvé d'où venait le problème.
    En fait j'ai eu la réponse en posant la question sur le forum de www.asp.net (une bonne référence ...).
    Il me manquait dans mon code un simple EditItemTemplate :
    Voici un bout de code qui marche :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
                        <asp:TemplateField HeaderText="Libellé long" SortExpression="libellelong">
                            <EditItemTemplate> 
                                <asp:TextBox ID="txtLibL" runat="server" Text='<%# Bind("libellelong") %>'></asp:TextBox> 
                            </EditItemTemplate>                    
                            <ItemTemplate>
                                <asp:Label ID="Libelong" runat="server" Text='<%# Bind("libellelong") %>'></asp:Label>
                            </ItemTemplate>
                            <FooterTemplate>
                                <asp:TextBox ID="NewLibellelong" runat="server"></asp:TextBox>
                            </FooterTemplate>
                            <FooterStyle Wrap="false" />
                        </asp:TemplateField>

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 25/06/2014, 20h48
  2. Réponses: 4
    Dernier message: 03/06/2014, 14h02
  3. Réponses: 12
    Dernier message: 18/07/2012, 13h00
  4. [.net] keypress marche plus après click
    Par noinneh dans le forum MFC
    Réponses: 1
    Dernier message: 24/02/2006, 17h45
  5. Réponses: 2
    Dernier message: 02/06/2005, 11h21

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