-1

ItemFileWriteStore を持つ EnhancedGrid があります。グリッドで startup() を呼び出した後、次のコードを使用して同じものを非表示にします。

dojo.style(grid.domNode, 'display', 'none');

次に、ボタンをクリックして、このグリッドのストアの URL を変更し、次のコードを使用してストアを更新してグリッドを表示しようとします。

store.save();
store.close();
store.url='AjaxPopulate.json?os_type='+dijit.byId('osType').get('value');
store.save();

store.fetch({query:{id: '*'}});
dojo.style(grid.domNode, 'display', '');
grid.store.close();
grid.setStore(store);

上記のコードは Firefox と Chrome では正常に動作しますが、IE8 と IE9 では動作しません。IE 開発者ツール コンソールに「オブジェクト エラー」メッセージが表示されます。

お願いします。上記のコードの問題を特定するのに役立ちます。

4

2 に答える 2

1

ストアをリロードする方法

'data' プロパティを使用して最初に (コンストラクターを介して) ストアを設定する場合はclearOnClose: true、同様に設定する必要があります。

の使用は.save()、一部の設定が変更され (isDirty)、これらをサーバーに伝達する必要がある ItemFileWriteStore のみです。つまり、閉鎖されたストアでは .save は必要ありません (ただし、URL は変更されていますが、フェッチは実行されておらず、間違いなくアイテムは変更されていません)。

次のコードを試してみてください。グリッドをgrid呼び出すとデータが再ロードされるため、コンポーネントでそれを実行するだけで済みます。.render()

// save if dirty, otherwise we cannot close a store unless its reset
grid.store.save(); 
// close store, this should clear data
grid.store.close();
// set new URL
grid.store.url = '??';
// rerun fetch XHR
// reload grid data with new items (no need to setStore as its same object reused)
grid.store.fetch({query:{id: '*'}, onComplete: function() {grid.render}});
于 2012-08-27T06:42:49.433 に答える
-1

問題は、サーバーから送信された無効な JSON にコンマが 1 つ余分に含まれていたことです。

IE はこれらのことに非常に特化しています。

閲覧して返信しようとしたすべての人に感謝します。

于 2012-08-27T10:33:13.473 に答える