2010-12-02 19 views
0

Bonjour à tous et s'il vous plaît pardonnez-moi à l'avance si je laisse des détails comme ceci est mon premier post ici:Aide ouvert un seul élément avec la fonction « de dialogue » dans JQuery (UI) dans MVC environnement

J'ai problème en utilisant la commande JQuery de dialogue. Plus précisément, je veux que le bouton appelé "Modifier" (ligne 7 ci-dessous) ouvre seulement 1 fenêtre par opposition à tous les uns derrière les autres. Voici une partie du code que j'utilise maintenant et une brève description de ce qui se passe avec le codde. Merci d'avance pour la lecture!

<!-- C# and HTML code here--> 
<table> 
<tbody> 
     <% foreach (var item in Model) { %> 
    <tr> 
    <td>  
       <button class="opener">Edit</button> 
       <div class="dialogButton" title="Something"><% Html.RenderAction("Something", "Admin", new { id = item.ID }); %></div> 
       <td>Other values</td> 
        </tr> 
</table> 

<!-- JQ script is here--> 
$(".dialogButton").dialog({ autoOpen: false }); 
      $(".dialogButton").dialog({ buttons: { "Ok": function() { $(this).dialog("close"); } } }); 
      $(".dialogButton").dialog({ show: 'fade' }); 
      $('.opener').click(function() { $('.dialogButton').dialog('open'); }); 

Qu'est-ce que l'application à ce jour n'est-il charge la table et a un bouton d'édition à côté de chaque ligne (ligne 7 ci-dessus), mais lorsque le bouton « Modifier » est appuyé sur la Html.RenderAction (ligne 8) affiche les fenêtres d'édition pour tous les éléments (item.ID) de la liste au lieu de seulement la ligne sélectionnée. Cela signifie qu'il y a actuellement environ 25 fenêtres qui s'affichent l'une derrière l'autre. Ce que je veux que le code fasse mais jusqu'ici n'a pas pu comprendre est seulement d'ouvrir la fenêtre d'édition pour la ligne sélectionnée.

Il a également été suggéré de remplacer la dernière ligne dans le code ci-dessus (ligne 17, dernier) avec le code suivant:

$('.opener').click(function() { $(this).next().dialog('open'); }); 

En théorie, cela est supposé ouvrir qu'un seul élément, mais il ne fonctionne pas . S'il vous plaît aider!

Encore merci!

Répondre

0

Il suffit de mettre ID unique pour chaque div class = "dialogButton" et classe bouton = "ouvre"

comme div class = "dialogButton" id = "DialogButton_1" et classe bouton = "ouvre" id = » opener_1. Utilisez item.ID ou autre chose qui est unique.

puis appeler le plugin de dialogue avec l'ID

$ ('ouvre '). cliquez sur (function() {$ (' # dialogButton_' + $ (this) .attr ('id')). dialog ('open');});

Fondamentalement vous appelez le dialogue qui correspond à l'ouvreur de cette façon

Espérons que ce soit logique pour vous.