2014-09-08 3 views
0

J'utilise le module de formatage de cellule de la grille de dojo pour afficher une grille interne à l'intérieur une autre grille. Même si la grille interne est ajoutée, elle ne s'affiche pas sur la page HTML car sa hauteur et sa largeur sont 0px.EnhancedGrid au sein de l'autre EnhancedGrid

page Ma JSP et la page JS où les grilles sont créées est indiqué ci-dessous. Toute aide serait appréciée.

Je pense que l'appel grid.startup() dans la cellule formatter est probablement pas le bon endroit. Mais où devrais-je déplacer l'appel de startup() à -ou- il y a quelque chose d'autre qui doit être fait pour rendre la grille intérieure pour rendre correctement.

---- fichier JSP ----

 <script type="text/javascript"> dojo.require("portlets.ListPortlet"); var <portlet:namespace/>args = { namespace: '<portlet:namespace/>', listDivId: 'listGrid' }; var <portlet:namespace/>controller = new portlets.ListPortlet(<portlet:namespace/>args); dojo.addOnLoad(function(){ <portlet:namespace/>controller.init(); }); </script>   

</div>  
fichier

---- ---- JS

dojo.declare("portlets.ListPortlet", null, { 

     constructor: function(args){  
       dojo.mixin(this,args); 
       this.params = args; 
     }, 
     init: function(){ 

       var layout = [[   
           {field: 'site', name: 'Site', width: '30px' } 
           {field: 'name', name: 'Full Name', width: '100px'},        
           {field: 'recordStatus', name: 'Status', width: '80px' }       
         ],[ 
           {field: '_item', name: ' ', filterable: false, formatter: this.formatNotesTable, colSpan: 3 }       
         ]]; 



       this.grid = new dojox.grid.EnhancedGrid({ 
        autoHeight: true, 
        autoWidth: true, 
        selectable: true, 
        query:{ 
        fromDate: start, 
         toDate: end 
        },    
        rowsPerPage: 10 
       }); 
       this.grid.placeAt(dojo.byId(this.listDivId)); 


       this.dataStore = new dojox.data.JsonRestStore({target: dataURL, idAttribute: idAttribute}); 
       this.grid.setStructure(layout); 
       this.grid.startup(); 
     },   
     formatNotesTable(rowObj) { 

      var gridData = { 
         identifier:"id", 
         items: [ 
             {id:1, "Name":915,"IpAddress":6}, 
             {id:2, "Name":916,"IpAddress":7} 
           ] 
      }; 


      var gridStructure = [{ 
         cells:[ 
            [ 
              { field: "Name", 
               name: "Name",           
              }, 
              { field: "IpAddress", 
               name: "Ip Address" ,           
               styles: 'text-align: right;' 
              } 
            ] 
           ] 
         }]; 

    var gridStore = new dojo.data.ItemFileReadStore({ data: gridData}); 

    var cpane = new dijit.layout.ContentPane ({  
    content: "inner grid should be displayed below" 
    }); 


    var subgrid = new dojox.grid.DataGrid({ 
         store: gridStore, 
         structure: gridStructure, 
         style: {width: "325px", height: "300px"}  
        }); 

       subgrid.placeAt(cpane); 
      subgrid.startup(); 
      return cpane; 
     } 
} 

Répondre

0

Je résolu mon problème en utilisant un dojox.layout .TableContainer dans EnhancedGrid.

Questions connexes