2

現在、固定ストアからデータを取得するグループ化機能を備えたグリッドがあります。

Ext.define('YUK.store.FakePendingDocs', {
    extend: 'Ext.data.Store',
    id: 'FakePendingDocs',
    autoSync: false,
    proxy: {
        type: 'memory'
    },

   fields: [ { name: 'docId', mapping: 'did' }
            , { name: 'name', mapping: 'name'}//, mapping : 'name'}
            , { name: 'client',mapping: 'cid' }
            , { name: 'description', mapping: 'description' }
            , { name: 'uploadeddate', mapping: 'dl', type: 'date', dateFormat: 'MS' }
            , { name: 'folder', mapping: 'fo' }
            , { name: 'group', mapping: 'gr' }

           ],

   groupers: [{
       property: 'group',
       direction: 'ASC'
   }],. 

   data: [ ... ]



}
);

次に、グリッドで次のことを行います。

Ext.define('YUK.view.center.pendingdocuments.Panel', {
    extend: 'Ext.grid.Panel',
    alias: 'widget.documents',
    id: 'documents',
    title: 'My Documents',
    store: 'FakePendingDocs',

    hideHeaders: true,
    forceFit: true,

    groupField: 'group',

....

しかし、グリッドで選択内容が乱れているという問題があります (項目を選択して別の項目を取得します)。これを解決するために、このhttp://www.sencha.com/forum/showthread.php?208453 スレッドを見つけました。しかし、私は煎茶が初めてなので、これをオーバーライドする方法がわかりません。私は次のようなことをしました:

Ext.define('YUK.store.FakePendingDocs', {
    extend: 'Ext.data.Store',
    id: 'FakePendingDocs',
    autoSync: false,
    proxy: {
        type: 'memory'
    },

   fields: [ { name: 'docId', mapping: 'did' }
            , { name: 'name', mapping: 'name'}//, mapping : 'name'}
            , { name: 'client',mapping: 'cid' }
            , { name: 'description', mapping: 'description' }
            , { name: 'uploadeddate', mapping: 'dl', type: 'date', dateFormat: 'MS' }
            , { name: 'folder', mapping: 'fo' }
            , { name: 'group', mapping: 'gr' }

           ],

   groupers: [{
       property: 'group',
       direction: 'ASC'
   }],. 

   data: [ ... ],

   sort:function(){
     var me = this, groups, g;




     me.callOverridden(arguments);
     groups = me.getGroups();


     me.data.clear();


     Ext.Array.each(groups, function (group) {
        Ext.Array.each(group.children, function (child) {
           me.data.add(child.internalId, child);
        });
     });
     me.fireGroupChange();
  }

}
);

しかし、これは機能しません。グリッドに配置することもできません。

誰かがこれで私を助けることができますか?

PS: グリッドのグループ化機能は次のようになります。

var groupingFeature = Ext.create('Ext.grid.feature.Grouping', {
    groupHeaderTpl: '{name}'


});

Sencha フォーラムのスレッド

4

3 に答える 3

3

私の問題に対して有効な答えがないように見えました。

そのため、データビューを使用して解決しました

于 2012-09-20T10:37:06.540 に答える
2

よくわかりませんが、ストアにはありますが、Panelオプションはありません。したがって、パネルからストアにgroupField移動する必要があるかもしれません。groupField: 'group',

更新: Extjs のバグです。誰かがこれの修正を提供しましたが、それが機能しているかどうかはわかりませんが、追加してみてください:

Ext.override(Ext.data.Store, {
  sort:function(){
     var me = this, groups, g;

     me.callOverridden(arguments);
     groups = me.getGroups();

     me.data.clear();

     Ext.Array.each(groups, function (group) {
        Ext.Array.each(group.children, function (child) {
           me.data.add(child.internalId, child);
        });
     });
     me.fireGroupChange();
  }
});

ストアの前、アプリケーションの起動時、または適切な場所と思われる場所

于 2012-09-11T12:59:56.207 に答える