2010-01-22 7 views

Répondre

2

Pouvez-vous être plus précis? Si vous voulez votre propre boîte de dialogue modale, vous pouvez simplement ajouter un gestionnaire d'événements (sur un bouton Modifier, par exemple) qui, une fois lancé, ouvrira votre propre boîte de dialogue personnalisée. Vous pouvez utiliser la boîte de dialogue de l'interface utilisateur jQuery à cette fin et la laisser ouverte à votre propre formulaire personnalisé.

Mise à jour Après avoir inspecté le code source jqGrid, info_dialog est la fonction qui est utilisée pour afficher cette boîte de dialogue particulière. Il y a un appel séparé pour afficher le popup "Chargement ...". Il ne semble pas y avoir un moyen simple de désactiver info_dialog. Cependant, vous pouvez modifier la source jqGrid pour accomplir ce dont vous avez besoin. Vous pouvez soit:

  • Retour immédiatement info_dialog - qui peut être extrême, car il pourrait signaler d'autres erreurs dont vous avez besoin - ou,

  • Trouvez et commentez l'appel qui affiche cette particulière erreur ajax. Il y a quelques essais et erreurs impliqués, mais avec seulement 18 appels à cette fonction, il ne vous faudra pas longtemps pour traquer. En fait, commencer en commentant cette instance, car il est appelé à partir de la fonction error d'un appel ajax:

    info_dialog(a.jgrid.errors.errcap,e.status+" : "+e.statusText+"<br/>"+u,a.jgrid.edit.bClose);

Il est évident qu'une telle modification est un dernier recours, mais une fois que cela fonctionne vous pourriez pensez à lancer un correctif pour l'équipe jqGrid afin de désactiver l'alerte.

+0

jqGrid utilise une fenêtre contextuelle par défaut pour les alertes, c'est ce que je veux supprimer – yretuta

+0

Tu veux dire celui qui dit « chargement », par exemple? –

+0

oui. et celui qui apparaît chaque fois qu'une requête du serveur échoue (j'ai réussi à capturer l'événement ajaxError et mon message personnalisé a été configuré, mais le dialogue modal apparaît également, qui indique Error: 500 et le message correspondant – yretuta

0

Rechercher div.loadingui div.msgbox {...} quelque part dans les fichiers css. Je pense que l'édition de cette classe CSS fera le travail.

0

Je sais que c'est hors sujet, mais avez-vous essayé SlickGrid http://wiki.github.com/mleibman/SlickGrid/examples.

+0

Nice grid, mais suggérez-vous commencer à partir de zéro juste parce qu'il a du mal à afficher une boîte de message personnalisé? –

0

j'ai changé le z-index de pop-up modal sur l'exécution une fois que vous pouvez accéder à ce que vous pouvez faire toute personnalisation

editoptions: { size: 20, maxlength: 10, 

          dataEvents: [ 
          { type: 'keypress', 
           fn: function (e) { 
            if (e.keyCode == 13) { 
             **$("#info_dialog").css('z-index', '100000');** 
            } 
           } 
          } 
         ] 


         } } 

En outre, si vous pouvez le faire sur un autre endroit si vous avez la réponse du serveur tel comme erreur

onCellSelect: function (rowid, iCol, aData) { 
        currentRow = rowid; 
        if (rowid && rowid !== lastsel) { 
         if (lastsel) jQuery('#ppGrid').jqGrid('restoreRow', lastsel); 
         $("#ppGrid").jqGrid('editRow', rowid, true, null, null, null, {}, reload,OnError); 
         lastsel = rowid; 
        } 
        else if (rowid && rowid === lastsel) 
        { $("#ppGrid").jqGrid('editRow', rowid, true, null, null, null, {}, reload,OnError); } 


       } 
0

Oui, vous pouvez le faire. vous pouvez rendre la propriété visible à false [$("#info_dialog").visible(false);] de la boîte modale, et vous pouvez appeler n'importe quelle boîte modale personnalisée.

editrules: { custom: true, custom_func: validate_edit } 


function validate_edit(posdata, colName) { 
      var message = ""; 
      if (posdata != '' && $.isNumeric(posdata)) 
       return [true, ""]; 

      if (posdata == '') 
       message = colName + " field is required" 
      if (!$.isNumeric(posdata)) 
       message = posdata + " is not a number"; 

      alert(message); 

      $("#info_dialog").visible(false); 

      return [false, ""]; 
     } 
Questions connexes