对于grid中每一条记录点击左边的+号能展开一个明细的子表格 所有数据包括列名均从后台获得,子表格的数据暂时在本地以做测试

在此贴一些代码留下记录
Maison > interface Web > js tutoriel > le corps du texte

Application rowExpander imbriquée de ExtJS4 table_extjs

WBOY
Libérer: 2016-05-16 16:50:27
original
1431 Les gens l'ont consulté

Aujourd'hui, je crée une grille et les données qu'elle contient doivent être détaillées. Après mûre réflexion, j'ai décidé de créer un tableau imbriqué ! Regardez l'image ci-dessous
Application rowExpander imbriquée de ExtJS4 table_extjs

Pour chaque enregistrement de la grille, cliquez sur le numéro à gauche pour développer un sous-tableau détaillé. Toutes les données, y compris les noms de colonnes, sont obtenues à partir de l'arrière-plan. les données de la sous-table sont temporairement stockées localement. Faites un test

Publiez du code ici et laissez un enregistrement

Copiez le code Le code est le suivant :

function displayInnerGrid(renderId) {

//Modèle pour le magasin de grille interne
Ext.define('TestModel', {
étendre : 'Ext.data.Model',
champs : [
{ nom : 'Field1' },
{ nom : 'Field2' },
{ nom : 'Field3' }
]
});

//données factices pour la grille intérieure
var dummyDataForInsideGrid = [
['a', 'a', 'a'],
['b', 'b', 'b' ],
['c', 'c', 'c']

]

var insideGridStore = Ext .create('Ext.data.ArrayStore', {
model: 'TestModel',
data: dummyDataForInsideGrid
}); Panel', {
store : insideGridStore,
selModel : {
selType : 'cellmodel'
},
colonnes : [
{ text : "Détail 1", dataIndex : ' Field1' },
{ texte : "Détail 2" , dataIndex : 'Field2' },
{ texte : "Détails 3", dataIndex : 'Field3' }
],
columnLines : true ,
autoWidth : true,
autoHeight : true ,
//width : 400,
//height : 200,
frame : false,
// iconCls : 'icon- grid',
renderTo: renderId
}) ;

/* innerGrid.getEl().swallowEvent([
'mousedown', 'mouseup', 'click',
'contextmenu', 'mouseover', 'mouseout',
'dblclick', 'mousemove'
]); */

}


fonction destroyInnerGrid(record ) {

var parent = document.getElementById (record.get('id'));
var child = parent.firstChild; while (child) {
child; .parentNode.removeChild(child);
child = child .nextSibling
}

}





Copier code
Le code est le suivant : grid_huizong.view.on('expandBody', function (rowNode, record, expandRow, eOpts) { / /console.log(record.get('id'));
displayInnerGrid(record.get('id'));

grid_huizong.view.on('collapsebody) ', function (rowNode, record, expandRow, eOpts) {
destroyInnerGrid (record);
});


Le code ci-dessus est un événement de liaison de grille. . Vous devriez être capable de comprendre ce que signifie le code spécifique

Notez que lors de la définition de la grille, utilisez



Copiez le code
Le code est le suivant : plugins : [{ ptype : 'rowexpander', rowBodyTpl : [
'
',
'
'
]
}],


Ceci est le plug-in rowexpander. . Certaines personnes sur Internet disent qu'il faut citer lorsqu'on l'utilise, mais puis-je quand même l'utiliser sans rien citer ?

Faites attention à l'identifiant de clé dans les trois morceaux de code ci-dessus. Vous pouvez modifier cet identifiant, mais il doit être remplacé par le premier élément dans les champs des données envoyées depuis l'arrière-plan. . Dans mon exemple, le premier élément de champs envoyé depuis l'arrière-plan est l'identifiant.
Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal