tanebisse
(Tanebisse)
October 23, 2014, 8:28am
1
Bonjour, j’ai la GridView ci-dessous. Je souhaiterai avec ma fonction dans “selectionChanged” obtenir l’attribut de mon choix correspondant à la ligne sélectionné. Aujourd’hui je n’arrive à récupérer que l’ID de l’objet sélectionné
$this->widget('zii.widgets.grid.CGridView', array(
'id'=>'tiers-grid',
'dataProvider'=>$listeTiers,
'filter'=>$tiersSearch,
'selectionChanged'=>" function(id) {
$('#Tiers_id').val($.fn.yiiGridView.getSelection(id));
}",
'columns'=>array(
array(
'header' => 'Id Tiers',
'name' => 'tiers.id',
),
array('name'=>'type','filter'=>false),
'nom',
'adresse1',
'adresse2',
'code_postal',
'ville',
'pays',
'departement',
),
));
tanebisse
(Tanebisse)
October 23, 2014, 9:25am
2
J’ai trouvé en le faisant à la main en JavaScript en parcourant le DOM comme ça
'selectionChanged'=>" function(id) {
$('#Tiers_id').val($('#tiers-grid table tbody .selected').children()[0].innerHTML);
}",
En modifiant children()[0] par children()[1] ou children()[2] etc, on accède à chacune des colonnes du tableau.
le_top
(Ext Yiiframework Com)
October 24, 2014, 12:38am
3
Personnellement je préfères rendre le code indépendant de ce qui est dans le tableau et au moins de l’ordre de ce qui est dans le tableau.
Plusieurs techniques se proposent:
Definir une classe sur les elements de la colonne et faire un filtrage sur la classe, plutôt que de choisir le 1ière colonne par exemple;
Faire de “#Tiers_id ” un “drop-down” et sélectionner le bon élément à partir de l’id.
Utiliser de l’ajax pour mettre à jour ‘#Tiers_id ’.
tanebisse
(Tanebisse)
October 24, 2014, 7:42am
4
Ta première solution me semble la meilleure en ce qui me concerne mais comment fait-on pour spécifier une classe aux colonnes de CGridView ?
le_top
(Ext Yiiframework Com)
October 24, 2014, 8:22am
5
Il faut juste ajouter cela dans le ‘htmlOptions’ du champs concerné:
'htmlOptions'=>array('class'=>'tiersid'),
Il y a également un ‘headerHtmlOptions’, etc.
De plus cela permet aussi une mise en forme différente.