2010-12-27 23 views
4

私はいくつかのデータ(ユーザーリスト)を持つグリッドを持っています。各行には、更新、削除、アクティブ化、サスペンドなどの多くのアクションがあります。Extjsグリッド内のComboBox

400〜500ピクセルを超えるボタンをたくさん配置するのではなく、各フィールドにアクションを適用してコンボボックスを配置したいと考えています。

問題は、ちょうどそのような列の行にコンボボックスをレンダリングできないか、何か不足しているということですか?誰かがこれでいくつかの光を当てることができますか?

new Ext.grid.GridPanel({ 
     region: 'center', 
     id: 'usersGrid', 
     store: store, 
     stripeRows: true, 
     autoExpandColumn: 'username', 
     columns: [ 
     { 
       // username 
     }, 
     { 
       // email 
     }, 
     { 
       // last seen 
     }, 
     { 
      // actions combo, it won't show 
       header : '', 
       width : 220, 
       fixed : true, 
       hideable : false, 
       dataIndex: 'actions', 
       renderer: new Ext.form.ComboBox({ 
         store: new Ext.data.SimpleStore({ 
          id: 0, 
           fields: ['abbr', 'action'], 
           data : [ 
           ['suspend', 'Suspend'], 
           ['activate', 'Activate'], 
           ['update', 'Update'], 
           ['delete', 'Delete'] 
           ] 
         }), 
         displayField:'action', 
         valueField: 'abbr', 
         mode: 'local', 
         typeAhead: false, 
         triggerAction: 'all', 
         lazyRender: true, 
         emptyText: 'Select action' 
       }) 
     } 
     ] 
}) 

答えて

0

これはほとんど正しいです。カスタムエディタを追加する方法にはいくつかの調整が必要な場合があります。この変更を試しましたか?

editor: new Ext.form.ComboBox({ 
        store: new Ext.data.SimpleStore({ 
         id: 0, 

残念ながら、あなたのコードが何をしているのか判断できず、動作していません。

使用しているExtJSのバージョンは何ですか?注目すべき点の1つは、現在のExtJS APIドキュメントにExt.data.SimpleStoreというオブジェクトが表示されないことです。別の種類のデータストアを代わりに使用しようとしましたか?このコンボに異なるタイプのストアを使用することをお勧めしますか?

9
  1. 変換グリッド編集可能なグリッドへ
  2. ではなく、「レンダラ」の欄に、エディタの設定を追加します。変更されたコードの下を検索します。
new Ext.grid.EditorGridPanel({ 
    region: 'center', 
    id: 'usersGrid', 
    store: store, 
    stripeRows: true, 
    autoExpandColumn: 'username', 
    columns: [ 
    { 
      // username 
    }, 
    { 
      // email 
    }, 
    { 
      // last seen 
    }, 
    { 
     // actions combo, it won't show 
      header : '', 
      width : 220, 
      fixed : true, 
      hideable : false, 
      dataIndex: 'actions', 
      editor : {xtype:'combo', 
         store: new Ext.data.ArrayStore({ 
           fields: ['abbr', 'action'], 
           data : [           
             ['suspend', 'Suspend'], 
             ['activate', 'Activate'], 
             ['update', 'Update'], 
             ['delete', 'Delete'] 
             ] 
           }), 
           displayField:'action', 
           valueField: 'abbr', 
           mode: 'local', 
           typeAhead: false, 
           triggerAction: 'all', 
           lazyRender: true, 
           emptyText: 'Select action' 
         } 
    }] 

})

+0

はい..あなたは正しいです。もう一つ問題が残るのは、エディタグリッドがコンボボックスを表示するためにそのセルをクリックする必要があり、それが私の望むものではないということです。現在、私はこの問題を投稿した人に何らかの問題を抱えていました。最初にコンボボックスを表示してコンボボックスからアクションを選択できるようにします。私はextjsを使用しています3.3.1 –

+0

あなたはComboBoxのように見えるようにセルをスタイルする必要があります。 EditorGridでセルを編集するには、実際にはシングルトンのComboBoxしかありません。そのため、希望の効果を得るには、セルをComboBoxのように見せる必要があります。 (これはとにかくたくさんのComboBoxをレンダリングするよりもはるかに高速です。) –

0

どのように行ごとに、右クリックしてコンテキストメニューは?私たちは、エディタのグリッドを使用することを決定したとき

関連する問題