1

Tabcontainer に入るタイトル ペイン内に Dojo 拡張グリッドがあります。タブ コンテナを動的に作成し、グリッドを含むタイトル ペインをペイントしています。初めてグリッドが適切に描画されますが、タブを閉じてもう一度開いてみると、タブコンテナのタイトルペインが描画されますが、ブラウザのサイズ変更を行うまでタイトルペイン内のグリッドは描画されません (または表示されません)。それで、誰かが同様の問題に直面したことがありますか?これの解決策を教えてください。グリッドでresize()、update()、startup()メソッドを試しましたが、何もうまくいきませんでした。

これについてあなたの考えを共有してください。

ありがとう、ヴィクラム

4

6 に答える 6

1

私は同じ問題を抱えていて、次のように dojo connect を実行することで回避策を見つけました。

dojo.connect(Datagrid,"_onFetchComplete",DataGrid,"_resize");

そのため、DataGrid がデータの読み込みを完了すると、自動的にサイズが変更されます。

私が助けてくれることを願っています。

挨拶、サイモン

于 2012-07-26T08:41:41.180 に答える
0

TabContainer.layout()コンテナのサイズが変更されるたびに呼び出す必要があります。これを行うには、1)DOMNodeの包含時にDOMEvents onunderflowおよびonoverflowを監視するか、2)コンテナーが表示されたとき(once-n-forall)を監視できます。

window.onresizeイベントがそれを修正する理由は、TabContainerがそのイベントをフックし、独自のレイアウトを呼び出すためです。

TabControllerがTabContainerのペインをいじる状況では、どこかに「layoutChildren」がない可能性があります。最適には、グリッドを一人っ子の最初のタブとして配置する必要があります。

グリッドが展開された後、TabContainerから「継承された」絶対的な計算された高さが取得されます。これは、TabContainerがサイズ変更を選択するか、サイズ変更を指示されると発生します。

手動で、タブを再度開いた後、これらの行を実装できるはずです。スクリプトは、説明のために_Grid.jsから取得されています

var grid = dijit.byId('MYGRIDID');
require(["dijit/layout/utils"], function(layerUtils) {
   layoutUtils.layoutChildren(grid.domNode,
               grid._contentBox, 
              [grid.tablist, {
                  domNode: grid.tablistSpacer,
                  layoutAlign: titleAlign
              }, {
                  domNode: grid.containerNode,
                  layoutAlign: "client"
              }]);
   grid._containerContentBox = layoutUtils.marginBox2contentBox(grid.containerNode,
              {
                  domNode: grid.containerNode,
                  layoutAlign: "client"
              });
   // note this line in particular
   grid.selectedChildWidget.resize(grid._containerContentBox);
}
于 2012-08-01T22:00:17.910 に答える
0

私の解決策は簡単すぎます: grid の宣言で太字のパラメーターを定義して、ここに書き込みます:

grid = new EnhancedGrid({id: 'MyIDgrid',
store: dataStore = new ObjectStore({objectStore: myStore}),
        structure: structureGrid,
        plugins: pluginGrid,
        style : 'width: 725px; height: 350px',
        autoWidth : true,
**autoHeight : false,height:'200px',**
        elasticView : '2'
}, document.createElement('div'));

これですべて解決!楽しみ!

于 2014-04-13T23:15:23.743 に答える
0

私の問題

私はあなたと同じような状況にありました:

  • グリッドはタイトルペインにあります (デフォルトでは閉じています)。
  • グリッドは、その場で破棄および再作成できます。
  • ユーザーが次の場合に問題が発生します。
    1. ペインを開きます。
    2. ペインを閉じます。
    3. グリッドを再作成します。
    4. ペインを再度開きます。
    5. ブラウザ ウィンドウのサイズが変更されるまで、グリッドは表示されません。

私の解決策

resize()私のアプローチは、タイトル ペインが開かれているときはいつでも、グリッドに強制することでした。グリッドとペインの両方にアクセスできる場所で、次のようなコードを使用しました。

var titlePane = registry.byId("title-pane-id");
var handle = aspect.after(titlePane, "toggle", function(deferred) {
    if (titlePane.open) {
        grid.resize();
    }
});
于 2012-11-23T22:59:53.023 に答える
0

style="height: auto;"目的に合うでしょう。

于 2015-04-27T10:11:43.060 に答える
0

グリッドに絶対高さを設定しようとしましたか? どのブラウザを試しましたか? (IEを使ってTabCointainerのDataGridで色々トラブルを経験しました)

于 2012-07-30T07:36:55.733 に答える