Ho lo stesso tipo di problema. Ho provato una soluzione simile a quella di Ryan Corradini.
È solo OK per il primo display. Se cambio la dimensione della finestra, la funzione di ridimensionamento viene chiamata correttamente, ma la dimensione della griglia rimane invariata.
Si prega di notare le mie condizioni particolari: nella funzione di ridimensionamento, devo impostare l'attributo altezza della griglia (il ridimensionamento + aggiornamento non sembra sufficiente).
HTML assomiglia:
<div id="msgItems" dojoType="dijit.layout.ContentPane" region="center"
style="padding:2px;">
<form id="msgDefForm" name="msgDefForm" dojoType="dijit.form.Form">
<div style="display:none;"><input type="text" name="msgName" id="msgName" dojoType="dijit.form.TextBox"></input>
</div>
<table dojoType="dojox.grid.DataGrid" jsId="msgGrid" id="msgGrid"
rowsPerPage="10" rowSelector="5px" singleClickEdit="false" loadingMessage="Loading message content"
errorMessage="Error while loading the message content" selectable="true" >
<thead>
<tr>
<th field="zone" width="8em" cellType="dojox.grid.cells.Select" options="properties, values" editable="true">Zone</th>
<th field="property" width="auto" editable="true">Property</th>
<th field="value" width="auto" editable="true">Value</th>
</tr>
</thead>
</table>
</form>
</div>
JS assomiglia:
... in startOnLoad :
dojo.connect(window, "onresize", msgGridResized);
msgGridResized();
...
function msgGridResized() {
var cont = dojo.byId("msgItems")
var h = cont.clientHeight - 4;
if (h >= 0){
var grd = dijit.byId("msgGrid");
grd.attr("height", h+"px");
grd.resize();
grd.update();
}
}
OK! L'ho trovato: il tag "form" sembra interferire con il calcolo del layout. L'ho semplicemente rimosso e ho modificato il mio codice di conseguenza per non aver bisogno del campo di input nascosto e ora è OK. – user140140