2010-12-14 52 views
2

J'essaie de remplir dynamiquement une liste déroulante lorsqu'un utilisateur tente d'ajouter un nouvel enregistrement dans un détail jqGrid. Voici ce que j'ai jusqu'ici. Il tire bien les données, mais il ne suffit pas de définir la valeur dans la liste déroulante. Toute aide serait grandement appréciée.Remplissage de la liste déroulante jqGrid à l'aide de l'événement beforeShowForm

beforeShowForm: function(formid) { 
     var sr = $("#list").jqGrid('selrow'); 
     if (sr) { 
      // get data from master 
      var UserID = $("#list").getGridParam('selrow'); 
      var roles = $.ajax({ type: "POST", 
       url: '<%= ResolveUrl("~/Admin/GetRoles/") %>' + UserID, 
       dataType: "json", 
       async: false, 
       success: function(data) { 

       } 
      }).responseText; 

      // set the field in detail with the value of mnaster 
      $("#UserID", formid).val(UserID); 
    // try and populate dropdown 
      $('#detail').setColProp('Description', { editoptions: { value: roles} }); 
     } else { 
      // close the add dialog 
      alert("no row is selected"); 
     } 

    } 

Répondre

2

Dans votre first question Je vous explique comment utiliser dataUrl pour générer la contiennent de la liste déroulante dynamiquement. Si vous utilisez form editing pour modifier les données de la grille, vous pouvez utiliser beforeInitData au lieu de beforeShowForm pour modifier le à '<%= ResolveUrl("~/Admin/GetRoles/") %>' + $("#list").jqGrid('selrow')avant le formulaire sera rempli. De la façon dont vous pouvez simplifier votre code, faites la requête ajax asynchrone et la question avec la définition des valeurs au contrôle déroulant sera résolue automatiquement.

+0

Merci Oleg. Je vais revoir cela encore. – dolphy

+0

Oleg - le beforeInitData a fonctionné! Je vous remercie beaucoup pour votre aide!! – dolphy

+0

@dolphy: Bienvenue! – Oleg