7

TitlePane 内に Dojo Grid ウィジェットがあり、幅が 100% に設定されています。

TitlePane はリキッド レイアウトであるため、ブラウザー ウィンドウのサイズによって幅が変化します。私が抱えている問題は、親ウィンドウが拡大 (または縮小) しても、グリッド自体の幅が変わらないことです。グリッドで render() を呼び出すことでサイズを変更できますが、グリッド ウィジェットを再描画するように親ウィンドウのサイズが変更されたことを検出するにはどうすればよいでしょうか?

4

4 に答える 4

11

私は時々これをしなければなりませんでした。それほど難しくありません:

function resizeGrid() {
   // do whatever you need here, e.g.:
   myGrid.resize();
   myGrid.update();
}

dojo.addOnLoad(function() {
   dojo.connect(window, "onresize", resizeGrid);
});
于 2009-06-18T13:47:02.793 に答える
1

私も同じような問題を抱えています。RyanCorradiniと同様のソリューションを試しました。

初回表示のみOKです。ウィンドウサイズを変更すると、サイズ変更関数が正しく呼び出されますが、グリッドのサイズは変更されません。

私の特定の条件に注意してください:サイズ変更機能では、グリッドの高さ属性を設定する必要があります(サイズ変更+更新だけでは不十分のようです)。

HTMLは次のようになります:

<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は次のようになります:

... 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();
    }
}
于 2009-07-28T13:38:09.203 に答える
1

このコードで試すことができます:

grid.resize({ w: 400, h: 400 });

もう少し一般化したい場合:

var parentDiv = dom.byId('parentDiv');
grid.resize({ w: parentDiv.clientWidth, h: parentDiv.clientHeight });

参照: Dojo DataGrid の高さのサイズ変更が機能しない

それがあなたのために働くことを願っています

于 2016-10-04T07:51:16.580 に答える
1

これを試す時間はありませんが、dojo.connect を TitlePane のサイズ変更イベントに接続し、ハンドラーでグリッドのサイズを変更したり、宣言/マークアップでパーセンテージを使用してグリッドのサイズを設定したりできませんか?

于 2010-01-15T16:04:48.653 に答える