2017-03-28 2 views
0

Je veux savoir s'il est possible de grouper une grille extjs par un ensemble de colonnes dans un élément hasMany d'un magasin. Mon exemple n'est pas assez complet pour recréer quelque chose, mais je cherche seulement un oui, voici un exemple, ou un non. Merci!Comment grouper des lignes de grille EXTJS 4.2.1 par un a beaucoup de relation?

J'ai une configuration de magasin extjs qui remplit une interface utilisateur pour un livre de bibliothèque. Il existe une relation hasMany dans le bookstore qui pointe vers un modèle représentant chaque fois que le livre a été extrait. Ce modèle aMany est lié à un panneau de grille dans l'interface utilisateur du livre montrant une liste de caisses. Je souhaite regrouper les lignes de grille par lesquelles le membre de bibliothèque a extrait le livre (disons que 3 utilisateurs l'ont vérifié deux fois chacun, actuellement j'ai 6 lignes avec memberName et checkoutDate.) Je veux regrouper ces lignes par memberName montrant trois en-têtes chacun avec deux rangées au-dessous d'eux montrant checkoutDate).

Je ne peux pas le faire fonctionner quelle que soit la configuration que j'essaie, même groupFields personnalisés, et les différentes façons de référencer des objets « enfants » d'un magasin (par exemple ExtJS 6 grid group by associated models)

C'est à peu près ce regard est le modèle juste pour aider à clarifier mon explication. Je sais que ce n'est peut-être pas syntactiquement correct, mais j'essaie simplement de savoir si mon objectif est possible et quelles approches je pourrais prendre.

Ext.define('Book.model.BookModel', { 
    extend : 'Ext.data.Model', 
    alias : 'model.BookModel', 
    fields : [{ 
     name: 'Title', 
     type: 'String' 
    }], 
    hasMany:[{ 
     name: 'checkouts', 
     model: 'Book.model.Checkouts' 
    }] 
}); 

Ext.define('Book.model.Checkouts', { 
    extend : 'Ext.data.Model', 
    alias : 'model.Checkouts', 
    fields: [{ 
     name: 'Name', 
     type: 'string' 
    },{ 
     name: 'checkoutDate', 
     type: 'date' 
    }], 
    associations : [{ 
     model: 'Book.store.BookStore', 
     type : 'belongsTo', 
     name: 'bookStore' 
    }] 
}); 

Ext.define('Book.store.BookStore', { 
extend: 'Ext.data.Store', 
model : 'Book.model.BookModel', 
groupField: '????', 
//etc. 
}); 

Config J'ai essayé:

--à magasin:

groupField: 'Checkouts.Name', 

groupField: 'checkouts.Name', 

--à config grille:

groupers: [{ftype:'grouping'}], 
groupers: [{ 
         property: 'Checkouts.name',//and with checkouts.name 
         root: 'data', 
         groupFn: function (val) { 
         return val === val ? val : ''; 
        } 
      }] 
+0

Avez-vous un violon avec lequel nous pourrions bricoler ... peut-être avec ce que vous avez déjà essayé de faire? – incutonez

+0

J'ai énuméré ce que j'ai essayé ci-dessous dans la question. Mais même plus qu'une solution, je veux aussi savoir si c'est possible du tout? – Sturzl

+0

Eh bien c'est la chose ... «checkouts» est techniquement un magasin, non? Donc faire 'checkouts.name' ne veut vraiment rien dire ... il faudrait avoir un modèle' Checkouts' singulier pour obtenir la propriété name. Fondamentalement, ce que je veux savoir, c'est que le magasin de votre grille devrait être «checkouts», et que la propriété de votre grouper devrait être «name». – incutonez

Répondre