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 MVC Discussion :

Probleme de code Ajax


Sujet :

ASP.NET MVC

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 52
    Par défaut Probleme de code Ajax
    Bonjour,

    J'ai un probleme d'ajax.
    J'ai un tableau d'enregistrement et sur chaque ligne j'ai un bouton "Modifier".
    J'aimerais changer les cellules en Textbox pour chaque clicke du "Modifier".
    Vos propositions sont les bienvenus

    Merci

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 81
    Par défaut
    Salut TAMBOOH,

    Je pense que tu devrais mettre dans chaque cellule de ton tableau une information permettant d'identifier la colonne sur laquelle tu te situe :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <tr class="L1">
       <td class="COL_Name">DUPONT</a>
       <td class="COL_Prenom">Jacques</td>
       ...
       <td><input type="button" value="Modifier" /></td>
       ...
    </tr>
    Ensuite, en utilisant par exemple JQuery, tu peux grâce au clic sur le bouton Modifier, parcourir le DOM et connaitre les éléments père, enfants ..., et les modifier.

    Donc dans l'exemple ci-dessus, Le père du bouton est un TD, qui lui a pour père un TR, donc via TF, tu peux regarder tous les enfants TD ayant une class spécifique, et après remplacé le contenu des TD par des INPUT.

    J'espère que cela t'aidera

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 52
    Par défaut
    Citation Envoyé par jonathan3357 Voir le message
    Salut TAMBOOH,

    Je pense que tu devrais mettre dans chaque cellule de ton tableau une information permettant d'identifier la colonne sur laquelle tu te situe :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <tr class="L1">
       <td class="COL_Name">DUPONT</a>
       <td class="COL_Prenom">Jacques</td>
       ...
       <td><input type="button" value="Modifier" /></td>
       ...
    </tr>
    Ensuite, en utilisant par exemple JQuery, tu peux grâce au clic sur le bouton Modifier, parcourir le DOM et connaitre les éléments père, enfants ..., et les modifier.

    Donc dans l'exemple ci-dessus, Le père du bouton est un TD, qui lui a pour père un TR, donc via TF, tu peux regarder tous les enfants TD ayant une class spécifique, et après remplacé le contenu des TD par des INPUT.

    J'espère que cela t'aidera
    bonjour,
    En faite j'ai l'Id de mes instances (chaque lignes), mais mon probleme c'est sur le Jquery: Je sais pas par ou commencer.
    Avec un peu plus de precision je devrais y arriver,
    Merci

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 81
    Par défaut
    Ok c'est plus JQuery qui te dérange pour le moment on va dire.

    Alors déjà dans un premier temps, il faut que t' initialise JQuery, pour cela, le plus simple est de suivre le tuto (http://docs.jquery.com/Tutorials:Get...ed_with_jQuery).

    Après, pour simplifier le parcours de tes éléments, il faut que tu insère le plus d'information dans l'html pour que tu puisse facilement naviguer dans ton code (http://api.jquery.com/category/selectors/ <<< en regardant la rubrique des sélecteurs tu comprendra mieux) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <tr class="EditableRow" id="ROW_ID">
       <td class="Field_Nom">DUPONT</a>
       <td class="Field_Prenom">Jacques</td>
       ...
       <td><input type="button" value="Modifier" id="Btn_Row_Id" /></td>
       ...
    </tr>
    Donc grâce au javascript et aux sélecteurs, tu va pouvoir naviguer dans ton html, voici des exemples (La syntaxe des sélecteurs est la même que pour déclarer des styles en css):

    $('EditableRow') << Cela va te récupérer tous les éléments marqués comme "Modifiable" (y compris une div si tu as mis <div class="EditableRow"></div>)

    $('tr.EditableRow') << Ca va te récupérer cette fois-ci uniquement les lignes ayant la class EditableRow

    $('tr.EditableRow td[class^=Field]') << Cela va te récupérer les Colonnes contenu dans une ligne marqué comme modifiable ayant pour class une class qui commence par la chaine Field

    ensuite, avec JQuery, tu peux récupérer ce qui est contenu dans un élément :
    $('tr.EditableRow td[class=Field_Nom]').html() << Cela va te retourner la valeur "DUPONT".

    Et tu peux modifier son contenu :

    $('tr.EditableRow td[class=Field_Nom]').html('<td><input type="text" value="'+$('tr.EditableRow td[class=Field_Nom]').html()+'"/> ') << cela te modifiera "DUPONT" en un champ de formulaire ayant comme valeur "DUPONT".


    Donc la, tu va pouvoir modifier le contenu de tes cellules & cie grâce a tout ça.

    Ensuite, il faut que tu gère le click sur le bouton modifier, alors, soit tu gère ca avec l'attribut onclick de ton bouton, ou alors, tu peux faire ça avec JQuery et les sélecteurs (http://api.jquery.com/click/) qui te permettront d'affecter une fonction à tous les boutons modifier des lignes modifiables :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $('tr.EditableRow input[type=button]').click(function() {
      // C'est ici que tu va modifier les colonnes de ton tableau pour afficher un formulaire
    });
    Donc j'espère que cela suffit, sinon, je te ferai un exemple complet qui répondrait à ton besoin

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 81
    Par défaut
    Donc voila un exemple que je viens de faire.

    Donc voici le contenu de la page Default.aspx, qui reprend les exemples que je te donnais avant :

    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
     
    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="WebApplication1._Default" %>
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
     
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title></title>
     
        <script type="text/javascript" src="/Scripts/jquery-1.4.1.min.js"></script>
        <script type="text/javascript" src="/Scripts/MyScript.js"></script>
     
        <style type="text/css">
        table, tr, td { border:solid 1px black; margin:0; padding:0; width:50%; }
        </style>
     
    </head>
    <body>
        <table>
           <tr class="EditableRow" id="ROW_1">
               <td class="Field_Nom">DUPONT1</td>
               <td class="Field_Prenom">Jacques1</td>
               <td><input type="button" value="Modifier" id="BTN_ROW_1" /></td>
           </tr>
     
           <tr class="EditableRow" id="ROW_2">
               <td class="Field_Nom">DUPONT</td>
               <td class="Field_Prenom">Jacques</td>
               <td><input type="button" value="Modifier" id="BTN_ROW_2" /></td>
           </tr>
     
           <tr class="EditableRow" id="ROW_3">
               <td class="Field_Nom">DUPONT----</td>
               <td class="Field_Prenom">Jacques????</td>
               <td><input type="button" value="Modifier" id="BTN_ROW_3" /></td>
           </tr>
        </table>
    </body>
    </html>
    Et voici le javascript qui permet de remplacer le contenu de la cellule par des TextBox :

    MyScript.js
    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
     
     
     
    $(document).ready(function () {
     
        // Ici, je lie la fonction btn_modifier_click à tous les bouton "Modifier"
        $('tr.EditableRow input[type=button]').click(btn_modifier_click);
    });
     
     
    function btn_modifier_click() {
        // Je récupère l'attribut ID du bouton que je viens de cliquer, 
        // ce qui me permet de connaitre l'ID de la ligne (BTN_ROW_1)
        var btnID = "" + $(this).attr('id').toString();
        var ID = btnID.replace('BTN_ROW_', ''); // Le je transforme donc le BTN_ROW_1 en 1
     
        // Et ici, je sélectionne donc toutes les TD ayant une class commenceant par field de la ligne ROW_1
        // et je boucle sur ces lignes ( c'est le $.each() )
        $.each($('tr.EditableRow[id=ROW_' + ID + '] td[class^=Field]'), function (index, object) {
            // La je recupère ce qui est contenu dans la TD, donc le nom ouprénom de la personne que je veux modifier
            var value = $(object).html();
            // Et je remplace le contenu de la cellule par une TextBox ayant pour valeur par défaut, le nom ou prénom de l'utilisateur sélectionné
            $(object).html("<input type='text' value='"+value+"' name='"+ $(object).attr('id')+"'");
        });
     
    }
    Voilà, avec cela, tu devrais pouvoir mieux comprendre comment ça fonctionne, et après tu le complètera pour y intégrer l'AJAX ... afin que les modifications soient prise en compte

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

Discussions similaires

  1. [AJAX] Code ajax
    Par christa_k dans le forum AJAX
    Réponses: 2
    Dernier message: 23/09/2009, 09h32
  2. [AJAX] code
    Par boutmos dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 19/01/2009, 16h33
  3. [VB.Net] Probleme popup code behind
    Par balibo dans le forum ASP.NET
    Réponses: 19
    Dernier message: 17/10/2005, 12h22
  4. probleme de code formulaire
    Par bachilbouzouk dans le forum ASP
    Réponses: 45
    Dernier message: 13/04/2005, 10h01
  5. [debutant] probleme de code :-(
    Par flogreg dans le forum Servlets/JSP
    Réponses: 14
    Dernier message: 16/08/2004, 18h20

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