2009-08-03 11 views
4

J'ai lu les articles sur dojox.Grid ici, y compris celui sur le tabcontainer, mais cela ne semble pas résoudre mon problème.Comment mettre un Dojox.grid dans un dijit.Dialog

J'ai une grille que j'ajoute par programmation qui fonctionne un régal si la grille est dans le balisage "principal", mais cesse d'afficher si je mets la grille dans un dialogue.

Des idées sur pourquoi? Utilisation de dojo 1.3.1.

dijit.byId("myDialog").show(); 
var gridStore = new dojo.data.ItemFileReadStore({ 
     data : { 
     identifier : "id", 
     items  : [ 
         {"id" : 1, "label" : "foo"}, 
         {"id" : 2, "label" : "bar"}, 
         {"id" : 3, "label" : "baz"} 
     ] 
     } 
    }); 

    /* A simple layout that specifies column headers and 
    * mappings to fields in the store */ 
    var gridLayout = [ 
      {name : "ID", field : "id", width : "50%"}, 
      {name : "Label", field : "label", width : "50%"} 
    ]; 

    /* Programmatically construct a data grid */ 
    var grid = new dojox.grid.DataGrid({ 
         store  : gridStore, 
         structure : gridLayout 
       }, "gridNode"); 

    /* Tell the grid to lay itself out since 
    * it was programmatically constructed */ 
    grid.startup(); 

Le balisage est:

<div dojoType="dijit.Dialog" id="myDialog" title="Multiple Addresses" style="width:400px;height:300px" > 
    <div dojoType="dijit.layout.ContentPane" id="gridNode" style="positon:relative;width:100%;height:100%"></div> 

Merci pour toute aide, Ruprict

Répondre

3

Ainsi, le problème que j'avais seeem provenir de ne pas mettre un style explicite le conteneur de conteneur div (gridNode) Une fois que j'ai fait ceci:

<div dojoType="dijit.layout.ContentPane" id="gridNode" style="width:400px;height:300px"></div> 

Il a commencé à fonctionner.

1

FYI. Je fais une chose similaire (grille dans une boîte de dialogue) et j'ai découvert que si j'essayais de modifier le magasin (ou au moins d'appeler setStore sur la grille) alors que le dialogue est caché, des erreurs se produisent. Juste quelque chose à surveiller.

0

Je le créais par programmation de sorte que cela ne fonctionnait pas pour moi, je devais me connecter à la méthode _getFocusItems de la boîte de dialogue, ce qui se produit seulement l'animation de la boîte de dialogue terminée.

lov.connect(lov,"_getFocusItems",dojo.hitch(this,function(){ 
       var dijitTitle = new dijit.TitlePane({ 
        title: "Resultados", 
        toggleable:false, 
        open:true, 
        style:"min-width:98%;display:inline-block;width:98%;height:"+dialogStyle.h-100+"px;", 
        baseClass:"dijitTitlePane qtResultsTitle" 
       },div); 
       dijitTitle.startup(); 

       var fisaSubGrid = new dojox.grid.EnhancedGrid({ 
        store:store, 
        structure: layoutRate, 
        autoHeight:"true", 
        autoWidth:true, 
        initialWidth:dialogStyle.w-50+"px", 
        plugins: { 
         pagination: { 
          description: false, 
          sizeSwitch: false, 
          pageStepper: true, 
          gotoButton: false, 
          maxPageStep: 5, 
          position: "bottom", 
          defaultPage: 2, 
          defaultPageSize: 10 
         } 
        } 
       }); 
       dijitTitle.addChild(fisaSubGrid); 
       fisaSubGrid.startup(); 

      })); 
Questions connexes