1

私はGXTを初めて使用し、3.0.1バージョンでこれを実行しようとしています。

ショーケースの例に基づいて編集可能なグリッドがあります。通常のHTMLと同じように表示する値とIDを処理する必要があり、その方法が見つからなかったため、 SimpleComboBoxを使用する列のコードを変更しました。SimpleComboBoxを使用します。

現在、 ComboBoxCellComboBoxを使用してこれを実現していますが、2つの問題があります。

第1号

テーブルが表示されているとき、コンボ列はインライン編集列のようには表示されません(例のように)。列を作成するためのコードは次のとおりです(ObjectDTOにはid属性とvalue属性のみがあります)

public class MyGrid implements IsWidget {

private GridEditing<MyGridDTO> columnEditing;
//another variables needed to create and handle the grid


    public MyGrid(){
    
        List<ColumnConfig<MyGridDTO, ?>> listColumns = new ArrayList<ColumnConfig<MyGridDTO, ?>>();
        sm.setSelectionMode(SelectionMode.SINGLE);
        
        //...
        
        ColumnConfig<MyGridDTO, ObjectDTO> colsomeProperty = new ColumnConfig<MyGridDTO, ObjectDTO>(
                        properties.someProperty(),170,cons.gbsomePropertyTitle());  

        //...               
                
        ComboBoxCell<ObjectDTO> somePropertyCell = new ComboBoxCell<ObjectDTO>(somePropertysStore,new LabelProvider<ObjectDTO>() {
            public String getLabel(ObjectDTO item) {                
                return item.getDescripcion();
            }
            
        });
        
        listColumns.add(colSomeProperty);

        colSomeProperty.setCell(somePropertyCell); 

        final ComboBox<ObjectDTO> combo = new ComboBox<ObjectDTO>(somePropertyCell);

        columnEditing.addEditor(colSomeProperty,combo);
        columnEditing.addBeforeStartEditHandler(new BeforeStartEditHandler<MyGridDTO>() {

                public void onBeforeStartEdit(BeforeStartEditEvent<MyGridDTO> event) {
                    
                    //handle whether or not to allow column editing
                }
            });
    }
        
}

私が第2号に入るまで、それは大したことではありませんでした

第2号

編集しようとしている行に応じて、グリッドの一部の列を読み取り専用にする必要があります。これは、ブール値であり、このオブジェクトを編集できるかどうかを判断するプロパティをMyGridDTOに含めることで作成しました。チグは次のとおりです。comboBox列を編集するときに、gridEditingeventsが発生しない場合、この動作は、ComboBoxがすでに表示されており、インライン編集プロパティの背後に「隠されていない」ためであると思います。つまり、すでに表示されているため、GridEtingは編集イベントを処理することを想定されていません。それは可能ですか?

この時点で、私はこれのためのworkaroudを見つけることができないので、何をすべきかわかりません。これに関する情報が非常に少ないのか、間違った方法で研究を行っているのか(おそらく)、私は確信が持てません。

手がかりはありますか?

PD:私の英語のために私を非難してください。

4

1 に答える 1

3

行を編集できるように GXT グリッドを設定するには、3 つの方法があります。これら 3 つの方法のうち 2 つを同時に使用しているようです。これが問題 1 の原因である可能性があります。

ユーザーがグリッド内の行を編集できるようにする主な 2 つの方法は、インライン編集とベースの編集です。これらの設定方法を説明する具体的な例があります。基本的には、データの描画方法だけをグリッドに伝えてから、ユーザーがデータを操作できるようにする方法を *GridEditing オブジェクトに指示します。これらのツールは両方とも、追加のワークフローの詳細 (編集の開始/完了/キャンセルを説明するイベント) を提供し、変更時に行/セルのスタイルを変更します。

3 番目のオプションは、セルをグリッドに直接追加することです。これにより、スタイルやワークフローの変更がスキップされ、ユーザーはデータをそのまま編集できるようになります (詳細については、 cellgrid の例を参照してください)。

最初と 3 番目のオプションの両方を使用しているようです - GridInlineEditing オブジェクトを作成して設定していますが、ColumnConfig に ComboBoxCell を追加しているため、Grid に常に各セルに ComboBox を描画するように要求しています。編集していないとき。

代わりに、値を文字列として描画するデフォルトの動作 (セルなし) だけ、またはユースケースに合わせて特定の描画を行うカスタム AbstractCell サブクラスが必要な場合があります。

于 2012-12-03T22:53:11.273 に答える