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 :

Modal Container Dismiss ==> Gros Bug Javascript, perte des ID html


Sujet :

ASP.NET MVC

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre tr�s actif
    Homme Profil pro
    Ing�nieur int�gration
    Inscrit en
    Juin 2011
    Messages
    260
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activit� : Ing�nieur int�gration
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2011
    Messages : 260
    Par d�faut Modal Container Dismiss ==> Gros Bug Javascript, perte des ID html
    Bonjour � tous,

    Je rencontre un soucis assez �trange: l'ouverture d'un modal container DYNAMIQUE provoque la perte des ID des composants HTML de la page principale. Par suite, le Javascript associ� � la page plante car les ID des composants HTML ne sont plus reconnu. Par ailleurs, ce modal-container dynamique relance le script principal "site.js".
    Je tiens � souligner que le modal container est d�clench� depuis un bouton dynamique situ� dans le champ d'une colonne d'une table, elle m�me situ�e dans un conteneur dynamique (partial-content). J'ai un autre modal container statique (pour l'�dition de personne) qui lui ne lui ne pose aucun soucis lors de son ouverture/fermeture et ne relance aucun script.


    Voici ma page principale (PortailFolderDetails.cshtml):


    Nom : Capture6.PNG
Affichages : 110
Taille : 119,6 Ko
    La Datatable est r�cup�r�e ici (via l'url GetPortailDoc):
    Nom : Capture3.PNG
Affichages : 105
Taille : 107,7 Ko
    Voici la classe qui g�n�re la DataTable
    Nom : Capture4.PNG
Affichages : 102
Taille : 199,1 Ko
    Voici le javascript principal (li� au projet).
    Nom : Capture5.PNG
Affichages : 104
Taille : 166,7 Ko
    Nom : Capture6.PNG
Affichages : 103
Taille : 73,8 Ko

    La fermeture du modal container dynamique associ� au commentaire (Clic sur "Annuler" ou la Croix) fait planter le javascript
    Nom : Capture7.PNG
Affichages : 100
Taille : 6,4 Ko
    Nom : Capture8.PNG
Affichages : 100
Taille : 65,6 Ko
    l'ID du JSTREE n'est plus reconnu !!!
    Nom : Capture9.PNG
Affichages : 107
Taille : 66,2 Ko
    Images attach�es Images attach�es     

  2. #2
    Membre tr�s actif
    Homme Profil pro
    Ing�nieur int�gration
    Inscrit en
    Juin 2011
    Messages
    260
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activit� : Ing�nieur int�gration
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2011
    Messages : 260
    Par d�faut
    Alors petite pr�cision, c'est lors de l'ouverture du modal container dynamique que je perds les ID du JSTree.
    Avant l'ouverture du modal container, j'ai bien acc�s � la fonction .jstree.
    Mais une fois ouvert, j'ai plus acc�s (undefined).

    Nom : Capture10.PNG
Affichages : 98
Taille : 31,8 Ko
    Images attach�es Images attach�es  

  3. #3
    Membre tr�s actif
    Homme Profil pro
    Ing�nieur int�gration
    Inscrit en
    Juin 2011
    Messages
    260
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activit� : Ing�nieur int�gration
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2011
    Messages : 260
    Par d�faut
    Paradoxalement, j'ai toujours acc�s � la DataTable
    Nom : Capture11.PNG
Affichages : 92
Taille : 6,6 Ko

    NB: j'avais �galement le m�me soucis avec l'ID de la DataTable qui avait saut�.
    Cela venait d'une constante javascript red�clar�e.

  4. #4
    Membre tr�s actif
    Homme Profil pro
    Ing�nieur int�gration
    Inscrit en
    Juin 2011
    Messages
    260
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activit� : Ing�nieur int�gration
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2011
    Messages : 260
    Par d�faut
    Le soucis est que lors de son ouverture, le modal-container dynamique, provenant d'une vue partielle (la DataTable) me relance le script "site.js".
    Et apparemment, pour �viter que la table ne soit red�clar�e une 2eme fois, il faut imp�rativement que la fonction "loadAsyncContent" s'ex�cute.
    Nom : loadAsyncContent.PNG
Affichages : 91
Taille : 78,9 Ko

    J'avais pr�c�demment, cette variable d�clar�e constante dans l'ent�te du script "site.js":
    Nom : constLocaleDt.PNG
Affichages : 92
Taille : 62,1 Ko

    Ce qui faisait que la fonction "loadAsyncContent" n'�tait jamais appel�e.
    Et j'avais ce bug:
    Nom : constError.PNG
Affichages : 89
Taille : 115,5 Ko
    Et en console l'appel de $('#tableDocument').DataTable() faisait tout sauter (on dirait qu'une nouvelle instance de la table a �t� cr��e � l'int�rieur de l'ancienne).
    Nom : DataTableAfterBug.PNG
Affichages : 92
Taille : 82,3 Ko

  5. #5
    Membre tr�s actif
    Homme Profil pro
    Ing�nieur int�gration
    Inscrit en
    Juin 2011
    Messages
    260
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activit� : Ing�nieur int�gration
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2011
    Messages : 260
    Par d�faut
    J'ai donc r�solu ce premier soucis avec une m�thode barbare, en changeant "const" par "var" pour localeDt.
    Mais ce n'est certainement pas la bonne solution.
    En tout cas, la vue partielle �tant recharg�e (la table avec), ce soucis de "double table" �tait r�solu.
    Mais il restait et il reste toujours le soucis du JSTREE dont l'ID a saut�.

    Je pense que la bonne question � se poser est de savoir pourquoi le script "site.js" est relanc� une deuxi�me fois.
    Ou comment faire en sorte que le modal container dynamique, g�n�r� depuis la table contenue dans une vue partielle, se comporte comme un modal conteneur classique, sans relancer aucun script et en pr�servant toutes les donn�es charg�es dans la page principale.

  6. #6
    Membre tr�s actif
    Homme Profil pro
    Ing�nieur int�gration
    Inscrit en
    Juin 2011
    Messages
    260
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activit� : Ing�nieur int�gration
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2011
    Messages : 260
    Par d�faut
    Le soucis r�sidait dans la vue.
    @using (Ajax.BeginForm...) semble r�soudre le pb.

    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
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
     
    @model xxxxxxxxxxx.Front.Areas.Portail.Models.PortailEditCommentaireViewModel
    @using xxxxxxxxxxx.Front.Ressource;
    @using xxxxxxxxxxxxxx.Front.Html;
    <div class="modal-header">
        <button type="button" class="close" data-dismiss="modal" aria-label="Close">
            <span aria-hidden="true">&times;</span>
        </button>
        <h4 class="modal-title">Ajout commentaire</h4>
    </div>
     
    @using (Ajax.BeginForm("UpdatePersonneDocComm", "Home", new AjaxOptions
    {
        HttpMethod = "POST",
        OnSuccess = "onSuccessUpdateCommentaire", // Nom de la fonction JavaScript à appeler en cas de succès
        OnFailure = "onFailureUpdateCommentaire",  // Nom de la fonction JavaScript à appeler en cas d'échec
    }, new { @id = "formUpdateCommentaire" })) // Donner un ID au formulaire pour la manipulation avec JavaScript
     
    {
        @Html.HiddenFor(m => m.Id)
        <div class="modal-body">
            <div class="container">
                <div class="form-horizontal">
                    @Html.ValidationSummary(true, "", new { @class = "text-danger" })
     
                    @{
                        int moduleId = ViewBag.ModuleId;
                    }
                    <div class="form-group @Html.DisplayDiv(m => m.Commentaire, PortailRessources.Ressources(moduleId))" style="margin-bottom:15px">
                        @Html.LabelFor(m => m.Commentaire, new { @class = "control-label col-sm-4" }, PortailRessources.Ressources(moduleId))
                        <div class="col-sm-8">
                            @Html.TextAreaFor(m => m.Commentaire, new { @class = "form-control" }, PortailRessources.Ressources(moduleId))
                        </div>
                    </div>
                    <div class="col-xl-12" style="margin-top:40px;">
                        @foreach (var modeleState in ViewData.ModelState.Values)
                        {
                            foreach (var error in modeleState.Errors)
                            {
                                <h5 style="color:red;margin-top:8px;">@error.ErrorMessage</h5>
                            }
                        }
                    </div>
                </div>
            </div>
        </div>
        <div class="modal-footer">
            <input type="submit" class="btn btn-success" value="Valider" />
            <button type="button" class="btn btn-default" data-dismiss="modal">Annuler</button>
        </div>
    }
    <script>
        function onSuccessUpdateCommentaire(response) {
            console.log('Commentaire mis à jour avec succès !');
            $('#modal-container-editCommentaire').modal('hide');
            $('.modal-backdrop').remove();
            //isModalOpen = false;
            reloadTable(); 
        }
     
        function onFailureUpdateCommentaire(xhr, status, error) {
            // Affiche un message d'erreur si la soumission échoue
            alert('Une erreur s\'est produite lors de la mise à jour du commentaire.');
        }
    </script>
    Images attach�es Images attach�es  

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. R�ponses: 1
    Dernier message: 01/12/2010, 20h16
  2. Gros bug SQL Server avec caract�re "�"
    Par Oluha dans le forum MS SQL Server
    R�ponses: 6
    Dernier message: 26/05/2005, 14h31
  3. Gros bug BDE ??
    Par totof42 dans le forum C++Builder
    R�ponses: 4
    Dernier message: 11/03/2004, 11h36
  4. gros bug interbase 6 freeware
    Par camis dans le forum InterBase
    R�ponses: 18
    Dernier message: 28/01/2004, 11h42
  5. [Kylix] Gros gros bug
    Par Hokuto dans le forum EDI
    R�ponses: 3
    Dernier message: 16/09/2003, 14h08

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