2010-05-27 6 views
0

J'ai un contrôle gridview avec supprimer asp: ImageButton pour chaque ligne de la grille. Ce que je voudrais, c'est qu'une boîte de dialogue jquery apparaisse lorsqu'un utilisateur clique sur le bouton de suppression pour demander s'il est sûr de vouloir le supprimer. Jusqu'à présent, la boîte de dialogue s'affiche très bien, j'ai des boutons sur cette boîte de dialogue et je peux faire en sorte que les boutons appellent les méthodes côté serveur mais en obtenant la boîte de dialogue pour connaître l'ID de la ligne sélectionnée par l'utilisateur. au code côté serveur.

Le bouton de la ligne de la page est actuellement juste une balise 'a' avec l'id 'dialog_link'. Le jquery sur la page ressemble à ceci:La boîte de dialogue jquery appelle une méthode côté serveur avec les paramètres du bouton

$("button").button(); 
    $("#DeleteButton").click(function() { 
     $.ajax({ 
      type: "POST", 
      url: "ManageUsers.aspx/DeleteUser", 
      data: "{}", 
      contentType: "application/json; charset=utf-8", 
      dataType: "json", 
      success: function (msg) { 

       // Replace the div's content with the page method's return. 
       $("#DeleteButton").text(msg.d); 
      } 
     }); 
    }); 

    // Dialog   
    $('#dialog').dialog({ 
     autoOpen: false, 
     width: 400, 
     modal: true, 
     bgiframe: true 

    }); 

    // Dialog Link 
    $('#dialog_link').click(function() { 
     $('#dialog').dialog('open'); 
     return false; 
    }); 


La boîte de dialogue lui-même est juste un ensemble de balises « div ». J'ai pensé à beaucoup de différentes façons de faire cela (passage de paramètre, variable de session etc ...) mais je n'arrive pas à comprendre comment faire fonctionner l'un d'entre eux. Toutes les idées sont les bienvenues

Comme toujours, merci d'avance à ceux qui contribuent.

Répondre

2

J'ai récemment fait quelque chose exactement la même chose au travail - la confirmation d'un élément de suppression. Je l'ai résolu en utilisant la méthode Data http://docs.jquery.com/Data pour stocker la valeur que je voulais transmettre.

Ainsi, par exemple mes supprimer des liens avaient les éléments suivants:

<a href="#" class="delete" id="1">Delete</a> 

ensuite un tous les clics sur la classe « supprimer », lorsque cela se produit défini les données sur la boîte de dialogue:

$("#dialog").data("id", $(this).attr("id")); 

qui sera alors accessible lorsque vous êtes dans votre boîte de dialogue.

$("#dialog-confirm").dialog({ 
     resizable: false, 
     height:140, 
     modal: true, 
     buttons: { 
      'Delete': function() { 
       alert($(this).data('id')); 
       $(this).dialog('close'); 
      }, 
      Cancel: function() { 
       $(this).dialog('close'); 
      } 
     } 
    }); 

Espérons que cela aide, crier si ce n'est pas clair.

+0

Merci pour la réponse rapide Alistair, je suis vraiment proche maintenant, tout ce que je pense que j'ai besoin maintenant est de pouvoir passer le paramètre à la méthode côté serveur. Dans ma méthode AJAX je l'utilise pour enregistrer la méthode url: "ManageUsers.aspx/DeleteUser". Ive essayé de fractionner la chaîne pour essayer et mettre le paramètre dans "ManageUsers.aspx/DeleteUser (" + $ (this) .data ('id') + ")" mais hélas en vain. Des idées sur la façon d'atteindre la dernière pièce du puzzle? – Chiefy

+0

'$ .ajax ({data: $ (this) .data ('id'), complète:/* ainsi de suite * /});' – Gutzofter

+0

Merci Gutzofter. Ok, après avoir lu plus à ce sujet, je vois que le paramètre est renvoyé comme une chaîne de requête. Comme la méthode côté serveur est statique, comment puis-je accéder à l'objet querystring? – Chiefy

Questions connexes