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 :

Éditer dans un TemplateField


Sujet :

ASP.NET

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2003
    Messages : 46
    Par défaut Éditer dans un TemplateField
    Je n'arrive pas à passer en mode édition quand j'utilise des TemplateField.
    Le lien 'Edit' change bien pour 'Mettre à jour' et 'Annuler' mais mon champ ne se change pas en InputBox. Si je clique sur 'Annuler', rien ne se passe; si je clique sur 'Mettre à jour', il vide tous les champs de la ligne.

    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="GridView1" Runat="server" DataSourceID="AccessDataSource1"
    DataKeyNames="ID_no"
    OnRowEditing="GridView1_RowEditing" >
     
    <Columns>
    <asp:CommandField ShowEditButton="True" />
     
    <asp:TemplateField HeaderText="ID_no" Visible="False">
    <ItemTemplate>
    <asp:Label ID="ID_noLabel" Runat="Server"><%# Eval("ID_no")%></asp:Label>
    </ItemTemplate>
     
    <asp:TemplateField HeaderText="Naissance" SortExpression="DateDeNaissance" >
    <ItemTemplate>
    <asp:Label ID="DateDeNaissanceLabel" Runat="Server" Text='<%# Eval("DateDeNaissance", "{0:dd-MM-yyyy}") %>'></asp:Label>
    </ItemTemplate>
    </asp:TemplateField>
     
    </Columns>
    </asp:GridView>
    L'erreur est peut-être dans mon code-behind:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
        {
            GridView1.EditIndex = e.NewEditIndex;
            GridView1.Rows[e.NewEditIndex].FindControl("DateDeNaissanceLabel");
        }
    Je pioche là-dessus depuis des jours. Une solution vous vaudra ma reconnaissance éternelle.

  2. #2
    Membre Expert Avatar de Arthis
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 265
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : Italie

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 265
    Par défaut
    pense à rajouter les edititemtemplate

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <asp:TemplateField HeaderText="ID_no" Visible="False">
    <ItemTemplate>
    <asp:Label ID="ID_noLabel" Runat="Server"><%# Eval("ID_no")%></asp:Label>
    </ItemTemplate>
      <EditItemTemplate >
    ton code pour la partie edition
    </EditItemTemplate >
    </asp:TemplateField >

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2003
    Messages : 46
    Par défaut
    Merci pour la piste Arthis. J'y suis presque. J'arrive à entrer en mode édition. C'est un progrès!

    --------------------------
    <EditItemTemplate>
    <asp:Textbox id = "JoueurIdentite" runat = "server"
    text='<%# Eval("JoueurIdentite") %>' />
    <br />
    </EditItemTemplate>
    -------------------------

    UpdateCommand="UPDATE [Table_Joueurs] SET [DateDeNaissance] = ?, [JoueurIdentite] = ?, [Statut] = ? WHERE [ID_no] = ?"

    -------------------------

    L'erreur est probablement ici:

    protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
    {
    GridView1.EditIndex = e.NewEditIndex;

    DataBind();
    }


    Si je mets: DataBind(); ça me donne un message d'erreur.
    Si je mets: AccessDataSource1.DataBind();
    ça me vide les champs de la ligne!

    Merci d'aider un débutant.

  4. #4
    Membre Expert Avatar de Arthis
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 265
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : Italie

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 265
    Par défaut
    pouquoi passer par du code behind, pour un résultat pragamtique plus rapide tu peux faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <EditItemTemplate>
    <asp:Textbox id = "JoueurIdentite" runat = "server" 
    text='<%# Eval("JoueurIdentite") %>' />
    <br />
    </EditItemTemplate>
     
    UpdateCommand="UPDATE [Table_Joueurs] SET [DateDeNaissance]=@DateDeNaissance, [JoueurIdentite]=@JoueurIdentite, [Statut] =@Statut WHERE [ID_no] =@ID_no">
    <UPDATEPARAMETERS>
           <ASP:PARAMETER name=DateDeNaissance type=DateTime>
           <ASP:PARAMETER name=JoueurIdentitetype=string>
           <ASP:PARAMETER name=Statut type=string>
    </UPDATEPARAMETERS>

    et tu met ID_no en datakeynames dans la balise gridview

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2003
    Messages : 46
    Par défaut
    J'ai épuré mon code et l'update m'efface toujours les champs que je déclare dans UpdateCommand et UpdateParameters. Les champs non déclarés demeurent intacts.

    Les suspects sont donc:
    UpdateCommand="UPDATE [Table_Joueurs] SET [JoueurIdentite] = ? WHERE [ID_no] = ?"

    -- ET/OU --

    <UpdateParameters>
    <asparameter Name="JoueurIdentite" Type="String" />
    </UpdateParameters>


    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
    <form id="form1" runat="server">
    <div>
     
    <asp:GridView ID="GridView1" Runat="server" DataSourceID="AccessDataSource1"
    DataKeyNames="ID_no" AutoGenerateColumns="False"
    AutoGenerateEditButton="true">
     
    <Columns>
     
    <asp:TemplateField HeaderText="ID_no" >
    <ItemTemplate>
    <asp:Label ID="ID_noLabel" Runat="Server" Text='<%# Eval("ID_no") %>'></asp:Label>
    </ItemTemplate>
    </asp:TemplateField>
     
    <asp:TemplateField HeaderText="Joueur" >
    <ItemTemplate>
    <asp:Label ID="JoueurIdentiteLabel" Runat="Server" Text='<%# Eval("JoueurIdentite") %>'></asp:Label>
    </ItemTemplate>
    <EditItemTemplate>
    <asp:Textbox id = "JoueurIdentite" Runat = "server" Text='<%# Eval("JoueurIdentite") %>' />
    </EditItemTemplate>
    </asp:TemplateField>
     
    </Columns>
    </asp:GridView>
     
    <asp:AccessDataSource ID="AccessDataSource1" Runat="server"
    SelectCommand="SELECT [JoueurIdentite], [ID_no] FROM [Table_Joueurs]"
    UpdateCommand="UPDATE [Table_Joueurs] SET [JoueurIdentite] = ? WHERE [ID_no] = ?"
    DataFile="~/App_Data/ldh.mdb">
    <UpdateParameters>
        <asp:Parameter Name="JoueurIdentite" Type="String" />
    </UpdateParameters>
    </asp:AccessDataSource>
    </div>
    </form>

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2007
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2007
    Messages : 58
    Par défaut
    Salut wazodnuit,

    Peut-être essaie ça si j'ai pas lu trop vite le post ça doit venir de l'extraction des données du template field, les modifications par rapport à ton code sont en rouge.

    c#
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    void GridView1_RowUpdating (Object sender, GridViewUpdateEventArgs e)
    {
      GridViewRow row = GridView1.Rows[GridView1.EditIndex];
      e.NewValues["JoueurIdentite"] = ((TextBox)row.FindControl("JoueurIdentite")).Text;
    }
    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
     
    <asp:GridView ID="GridView1" Runat="server" DataSourceID="AccessDataSource1"
    DataKeyNames="ID_no" AutoGenerateColumns="False"
    onrowupdating="GridView1_RowUpdating"
    AutoGenerateEditButton="true">
     
    <Columns>
     
    <asp:TemplateField HeaderText="ID_no" >
    <ItemTemplate>
    <asp:Label ID="ID_noLabel" Runat="Server" Text='<%# Eval("ID_no") %>'></asp:Label>
    </ItemTemplate>
    </asp:TemplateField>
     
    <asp:TemplateField HeaderText="Joueur" >
    <ItemTemplate>
    <asp:Label ID="JoueurIdentiteLabel" Runat="Server" Text='<%# Eval("JoueurIdentite") %>'></asp:Label>
    </ItemTemplate>
    <EditItemTemplate>
    <asp:Textbox id = "JoueurIdentite" Runat = "server" Text='<%# Eval("JoueurIdentite") %>' />
    </EditItemTemplate>
    </asp:TemplateField>
     
    </Columns>
    </asp:GridView>
     
    <asp:AccessDataSource ID="AccessDataSource1" Runat="server"
    SelectCommand="SELECT [JoueurIdentite], [ID_no] FROM [Table_Joueurs]"
    UpdateCommand="UPDATE [Table_Joueurs] SET [JoueurIdentite] = @JoueurIdentite WHERE [ID_no] = @ID_no
    DataFile="~/App_Data/ldh.mdb">
    /**<UpdateParameters>
        <asp:Parameter Name="JoueurIdentite" Type="String" />
    </UpdateParameters>**/</asp:AccessDataSource>
    </div>
    </form>

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2003
    Messages : 46
    Par défaut
    knowl,

    Ça fonctionne!

    Comme précisé dans le contrat: ma reconnaissance éternelle.

    Merci aussi à Arthis.

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 17/09/2008, 18h05
  2. éditer dans une JTable?
    Par motivée dans le forum Composants
    Réponses: 9
    Dernier message: 04/05/2008, 20h41
  3. Comment éditer les Scipts dans SWF
    Par Arn°oO dans le forum Flash
    Réponses: 8
    Dernier message: 28/02/2008, 08h53
  4. Réponses: 2
    Dernier message: 11/02/2008, 10h37
  5. Réponses: 2
    Dernier message: 07/01/2008, 17h22

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