2010-08-11 4 views
2

J'utilise l'option JqGrid-subGrid dans mon projet MVC pour obtenir un aspect gridview imbriqué. J'ai pu remplir des données dans la grille parent, j'ai activé la sous-grille et donné l'URL de sous-grille pour peupler les données innergrid. Maintenant, le problème, sous-grille ne s'affiche pas lorsque la page est exécutée, et pas seulement, la méthode subGridUrl: n'est pas appelée. Quelqu'un peut-il m'aider à comprendre la raison derrière tout cela? Ci-dessous mon code:JqGrid - SubGrid n'apparaissant pas

jQuery (document) .ready (function() {

 jQuery("#list").jqGrid({ 

     url: '/jqgrid/DynamicGridData/', 

     datatype: 'json', 

     mtype: 'GET', 

     colNames: ['SurveyQnGrpId', 'SurveyQnGroup1'], 

     colModel: [ 
       { name: 'SurveyQnGrpId', index: 'SurveyQnGrpId', width: 40, align: 'left' }, 

       { name: 'SurveyQnGroup1', index: 'SurveyQnGroup1', width: 400, align: 'left'}], 

      pager: jQuery('#pager'), 

     rowNum: 10, 

     rowList: [5, 10, 20, 50], 

     sortname: 'SurveyQnGrpId', 

     sortorder: "SurveyQnGroup1", 

     viewrecords: true, 

     caption: 'My first grid', 

      subGrid: true, 

      subGridUrl: '/jqgrid/InnerGridData/', 

     subGridModel: [ 
      { 

       name: ['SurveyQnGrpId','SurveyQnId', 'SurveyQn', 'SurveyQnCategory', 'MandatoryQn','RadioOption3'], 

       width: [10,10, 100, 10, 10,10], 

       align: ['left', 'left', 'left', 'left'], 

       params: ['SurveyQnGrpId'] 

      }] 

    }); 
}); 

Merci à l'avance, Ancy

Répondre

2

vous devez ajouter

subGrid: true, 
     jsonReader : { 
      root: "rows", 
      page: "page", 
      total: "total", 
      records: "records", 
      repeatitems: true, 
      cell: "cell", 
      id: "id", 
      subgrid: { 
       root: "rows", 
       repeatitems: true, 
       cell: "cell", 
       id: "id" 
      } 
     }, 

et vous aussi besoin de télécharger le nouveau répertoire SRC jqgrid et sélectionnez tous les composants car je pense qu'il existe des dépendances

4

je l'ai trouvé plus facile de vider le intégré et d'utiliser leur sous-grille « sous-maille comme grille » exemple pour insérer une grille flambant neuf à la volée:

From their wiki:

subGrid: true, 
subGridRowExpanded: function(subgrid_id, row_id) { 
// we pass two parameters 
// subgrid_id is a id of the div tag created within a table 
// the row_id is the id of the row 
// If we want to pass additional parameters to the url we can use 
// the method getRowData(row_id) - which returns associative array in type name-value 
// here we can easy construct the following 
    var subgrid_table_id; 
    subgrid_table_id = subgrid_id+"_t"; 
    jQuery("#"+subgrid_id).html("<table id='"+subgrid_table_id+"' class='scroll'></table>"); 
    jQuery("#"+subgrid_table_id).jqGrid({ 
     url:"subgrid.php?q=2&id="+row_id, 
     datatype: "xml", 
     colNames: ['No','Item','Qty','Unit','Total'], 
     colModel: [ 
     {name:"num",index:"num",width:80,key:true}, 
     {name:"item",index:"item",width:130}, 
     {name:"qty",index:"qty",width:80,align:"right"}, 
     {name:"unit",index:"unit",width:80,align:"right"},   
     {name:"total",index:"total",width:100,align:"right",sortable:false} 
     ], 
     height: 100%, 
     rowNum:20, 
     sortname: 'num', 
     sortorder: "asc" 
    }); 
+0

bon conseil. Je n'ai même pas regardé celui-là. Permet plus de personnalisabilité de cette façon aussi. +1 – helios456