3

GXT 3.0でセルごとにエディターの種類を定義する方法はありますか?

転置テーブルを作成する必要があります。列が行になり、行が列になります。その場合、(通常のテーブルの観点から) 列にはさまざまなエディター タイプがあり、行には同じエディター タイプがあります。

次のアプローチを使用しようとしています-正常に機能しているようで、データ型に基づいてエディターを開くことができますが、クリックすると; エディターを閉じたり隠したりしません。

誰かが私を正しい方向に向けていただければ幸いです。

final GridInlineEditing<MyModel> editing = new GridInlineEditing<MyModel>(mygrid){
        @SuppressWarnings("unchecked")
    @Override public <O> Field<O> getEditor(ColumnConfig<MyModel, ?> columnConfig) {
        if(valueColumnName.equals(columnConfig.getHeader().asString())) {
                MyModel myModel = tree.getSelectionModel().getSelectedItem();
            if(MyModelType.STRING.equals(myModel.getMyModelType())) {
                TextField textField =  new TextField();
                textField.setAllowBlank(Boolean.FALSE);
                return (Field<O>) textField;
            }
            else {
                TextArea textField =  new TextArea();
                textField.setAllowBlank(Boolean.FALSE);
                return (Field<O>) textField;
            }
        }
        return super.getEditor(columnConfig);
    }
};
editing.setClicksToEdit(ClicksToEdit.TWO);

PS: これは以下の質問に似ています。しかし、答えはGXT 3.0以降に固有のものです。私はstackoverflowが初めてで、古いスレッドに新しい投稿を追加するのではなく、新しい質問を作成することをお勧めしました。 GXT EditorGrid: セル単位でセル エディターの種類を選択します

4

2 に答える 2

0

フィールドが閉じていないのは、実際にそれらを GridInlineEditing クラスに追加していないためだと思います。

次の return ステートメントがある部分。

return (Field<O>) textField;

これらのテキストフィールドはグリッドに追加されません。

最初の 2 つの return ステートメントを次のコードに置き換えてみます。

super.addEditor(columnConfig, (Field<O>) textField;

これにより、 で使用される一部のマップにエディタが追加されAbstractGridEditingます。具体的には、AbstractGridEditing.removeEditor(GridCell, Field<?>)メソッドで使用され、親から切り離すことができるようにフィールドがマップ内にある必要がありますGridInlineEditing.doCompleteEditing()GridInlineEditing.cancelEditing()

于 2013-04-18T15:32:43.637 に答える