2010-05-28 5 views
2

J'essaie d'implémenter le téléchargement de fichiers avec jqgrid (dans un projet Zend Framework). jqgrid vous permet de créer un champ de saisie de type "fichier" mais n'active pas ENCTYPE = "multipart/form-data".Téléchargement de fichier avec jqgrid en PHP

Le créateur recommande d'utiliser un autre plug-in pour gérer les téléchargements de fichiers, en particulier Ajax File Upload. Il dit de l'initialiser en utilisant la méthode onInitializeForm() mais exactement comment faire cela n'est pas clair pour moi. Il dit,

« Je suggère également que vous pouvez utiliser le plugin de téléchargement de fichiers Ajax et intialize il qu'une seule fois dans l'événement onInitializeForm. »

Et c'est à ce sujet pour des instructions sur la façon de procéder.

Ce que je l'ai fait jusqu'à présent: je le formulaire de modification jqGrid afficher le champ de saisie de fichiers et j'ai tous les différents fichiers de plugin en place et le chargement correctement. Ce que je ne peux pas comprendre, c'est comment obtenir le formulaire soumis pour télécharger correctement le fichier (je suppose que je ne peux pas comprendre comment "initialiser le plugin de téléchargement de fichier ajax avec l'événement onInitializeForm"). Toutes les idées sont grandement appréciés. Pour ce que ça vaut, je peux obtenir OnInitializeForm pour déclencher quelque chose de simple comme l'alerte ('test') mais il se déclenche en nombre croissant chaque fois que vous chargez la grille (comme, rien la première fois, une alerte la prochaine fois que vous chargez la grille, deux alertes la prochaine fois, etc.).

+0

Quelle version de zfdatafgrid utilisez-vous? – emeraldjava

+0

Je n'utilise pas ZF Datagrid ... J'utilise jqgrid (version 3.6.5). ZF Datagrid n'est pas encore à la version 1 donc je suis réticent à l'utiliser pour autre chose que jouer. – Stuart

Répondre

2

La réponse est aussi comme:

<!-- Add your other js files like jQuery, jqGrid etc. --> 
<script type="text/javascript" src="js/ajaxfileupload.js"></script> 
<script language="javascript"> 
    $(function() { 
     $(document).ready(function() { 
      jQuery("#your_grid_id").jqGrid({ 
       url: 'your_url', 
       datatype: 'json', 
       mtype: 'post', 
       pager: 'your_pager_id', 
       colNames: ["Description", "File"], 
       colModel: [{name: "desc", index: "desc", ... ... ...}, {name: "file_to_upload", index: "file_to_upload", edittype: "file", ... ... ...}] 
      }).navGrid("#your_pager_id",{{... ... ...},{ 
       jqModal:true,closeAfterEdit: true,recreateForm:true,onInitializeForm : function(formid){ 
        $(formid).attr('method','POST'); 
        $(formid).attr('action',''); 
        $(formid).attr('enctype','multipart/form-data'); 
       }, afterSubmit : function(response, postdata){ 
         $.ajaxFileUpload({ 
          url: 'your_file_url_where_upload_operates', 
          secureuri:false, 
          fileElementId:'file_to_upload', 
          dataType: 'json', 
          success: function (data, status) { 
           alert("Upload Complete."); 
          } 
         }); 
        } 
       }},{ 
       jqModal:true,closeAfterAdd: true,recreateForm:true,onInitializeForm : function(formid){ 
        $(formid).attr('method','POST'); 
        $(formid).attr('action',''); 
        $(formid).attr('enctype','multipart/form-data'); 
       }, afterSubmit : function(response, postdata){ 
         $.ajaxFileUpload({ 
          url: 'your_file_url_where_upload_operates', 
          secureuri:false, 
          fileElementId:'file_to_upload', 
          dataType: 'json', 
          success: function (data, status) { 
           alert("Upload Complete."); 
          } 
         }); 
        } 
       } 
      }); 
     }); 
    }); 
</script> 

J'utilisé recreateForm: true pour faire en sorte que sur tous les Ajouter ou modifier le formulaire est recréé.

Si vous avez encore un problème, n'hésitez pas à me le demander.

+1

Bonjour! Pourquoi faites-vous le téléchargement du fichier ajax dans l'événement afterSubmit? Je vous remercie! –

Questions connexes