2

gxt のLiveGridを使用しています。フィルターを追加したい。以下の数行を追加しましたが、データはフィルタリングされません。ここに何か欠けていますか?

GridFilters filters = new GridFilters(); 
filters.setLocal(true); 

StringFilter nameFilter = new StringFilter("column name"); 
filters.addFilter(nameFilter); 

filters.init(liveGrid);
liveGrid.addPlugin(filters);
4

2 に答える 2

2

フィルターjavadocから:

フィルターを Grid 列に追加するには、フィルターの具体的なサブクラスのインスタンスを作成し、コンストラクターに列の ValueProvider を渡し、フィルターを GridFilters に追加します。

コード サンプルは制限が多すぎるようで、おそらくパラメーター化する必要があります。StringFilter には、フィルタリングするモデル オブジェクトのプロパティの ValueProvider を指定する必要があります。以下は、フィルターを使用してグリッドを作成する方法の簡単な概要です。

クラス User があるとしましょう

public class User implements Serializable {
    private String name;
    private Integer id;

    // Setters and getters
}

public interface UserProperties extends PropertyAccess<User> {
    @Path("id")
    ModelKeyProvider<User> key();

    ValueProvider<User, String> name();
}

ユーザーを表示するグリッドを作成するには、次のようにします。

private static final UserProperties props = GWT.create(UserProperties.class);
...

// Create column config
ColumnConfig<User, String> nameCol = new ColumnConfig<User, String>(props.name(), 200, "Name");

// Create column model
List<ColumnConfig<User, ?>> l = new ArrayList<ColumnConfig<User, ?>>();
l.add(nameCol);
ColumnModel<User> cm = new ColumnModel<User>(l);

// Create User store
ListStore<User> store = new ListStore<User>(props.key());

// Create your grid
final LiveGridView<User> liveGridView = new LiveGridView<User>();
liveGridView.setForceFit(true);

Grid<User> view = new Grid<User>(store, cm) {
  @Override
  protected void onAfterFirstAttach() {
    super.onAfterFirstAttach();
    // Get grid data
  }
};

// Create a String filter for the column
StringFilter<User> nameFilter = new StringFilter<User>(props.name());

// Create a GridFilters
GridFilters<User> filters = new GridFilters<User>();
filters.initPlugin(grid);
filters.setLocal(true);
filters.addFilter(nameFilter);
于 2012-06-21T13:37:11.703 に答える
0

GridFilters フィルター = 新しい GridFilters(); filters.setLocal(真);

StringFilter nameFilter = new StringFilter("列名"); filters.addFilter(nameFilter);

filters.init(liveGrid); liveGrid.addPlugin(フィルター);

フィルターを適用した後にデータを取得する場合は、AbstractGridFilters の reload() メソッドをオーバーライドする必要があります。

于 2012-07-16T10:25:56.633 に答える