2012-01-16 18 views
0

GXTのショーケースの例「ページングBeanModelグリッド」に基づいて、データソースの変更を行ったときにグリッドをリロードしようとしました。私はそのようなローダーを定義しました:GXTグリッドのデータを再読み込みします

final BasePagingLoader<PagingLoadResult<ModelData>> loader = 
    new BasePagingLoader<PagingLoadResult<ModelData>>(proxy, new BeanModelReader()); 
loader.setRemoteSort(true); 

データが正しく読み込まれます。私が行うと

loader.load(); 

私のページングツールバーはちょうどフリーズと無効になり、グリッドはあまりにもフリーズとロードマスクと思われるものを表示します。

私は運なしで二重のリロードを強制するためにいくつかのイベントを追加しようとしました:

grid.addListener(Events.Attach, new Listener<GridEvent<ModelData>>() { 
    public void handleEvent(GridEvent<ModelData> be) { 
     loader.load(); 
    } 
}); 

私はよく、同じ結果として再構成(店舗、センチ)オプションを使用しようとしました。

助けが必要ですか?

ありがとう、 Jordi。

+0

はとても 'loader.load(0、50)のように、ページングオフセット及び制限を渡してみてくださいは、'、およびそれが役立つかどうかを見てください。 –

答えて

1

ロードバーがグレーアウトしているので、動作していることがわかります。また、グリッドに読み込みメッセージが表示されることがあります。動作しているコードはサーバーであり、おそらくアイテムを準備しています。

呼び出しの開始時と終了時にサーバーコード(おそらくRPCサーブレット)にログメッセージを設定して、実行に要する時間を確認します。これは、あなたの質問の情報に基づいて、実際に「フリーズ」が実際に起こっている場所です。

その時間後にブラウザにポーズがある可能性もありますが、その場合はローディングサークルの移動が停止します。私に

+0

サーバコードがうまく動作しています。実際、どちらの場合もまったく同じ呼び出しです。私はfirebugでRPCレスポンスを二重チェックし、有効なデータを含んでいます。サーバーやJSの例外はありません。 –

+0

コードを投稿する必要があるかもしれません。あなたのコードに基づいた例とは違ったものが配線されています。正しく動作します。サーバーではなく、サーバーが正常に動作し、良好なデータを送信している場合は、クライアントでなければなりません。読み込みアニメーションがまだ動作していれば、データは何かによって無視され、回転していなければ、クライアントはどこかのループに詰まり、実際にフリーズします。 –

+0

私はいくつかのコード、任意のヒントを掲載しましたか? –

0

グリッドコントローラ上のバグがあります:

コードの詳細:

private final BasePagingLoader<PagingLoadResult<ModelData>> loader; 
private Grid<ModelData> grid; 
[...] 

public ListUsersView(RpcProxy<PagingLoadResult<UserTableEntryBean>> proxy) { 
     // Create loader 
     loader = new BasePagingLoader<PagingLoadResult<ModelData>>(proxy, new BeanModelReader()); 
     loader.setRemoteSort(true); 

     // Create store 
     store = new ListStore<ModelData>(loader); 

     FlowLayout layout = new FlowLayout(); 
     layout.setMargins(new Margins(3, 0, 0, 0)); 
     this.setLayout(layout); 

     final PagingToolBar toolBar = new PagingToolBar(50); 
     toolBar.bind(loader); 

     List<ColumnConfig> columns = new ArrayList<ColumnConfig>(); 
     columns.add(new ColumnConfig(UserTableEntryBean.Fields.username.name(), "Username", 100)); 
     columns.add(new ColumnConfig(UserTableEntryBean.Fields.email.name(), "E-mail", 200)); 
     ColumnConfig date = new ColumnConfig(UserTableEntryBean.Fields.creationDate.name(), "Creation date", 100); 
     date.setDateTimeFormat(DateTimeFormat.getFormat("dd/MM/y")); 
     columns.add(date); 

     ColumnModel cm = new ColumnModel(columns); 

     grid = new Grid<ModelData>(store, cm); 

     grid.setLoadMask(true); 
     grid.setBorders(true); 
     grid.setAutoExpandColumn(UserTableEntryBean.Fields.creationDate.name()); 

     [...] 
} 

public boolean refreshTable() { 
     return loader.load(); 
} 
関連する問題