Bonjour,
je dois faire face à un problème pas agréable dans mon administration: j’utilise un classique dataProvider pour lister mes items
<?php
$this->widget('zii.widgets.CListView', array(
'dataProvider'=>$datas,
'itemView'=>'_view',
)); ?>
Chaque item a un lien de suppression
<?php echo CHtml::linkButton(Yii::t('app',"Supprimer"),array(
'submit'=>array('projet/delete','id'=>$data->id),
'confirm'=>Yii::t('app',"Êtes-vous sur de vouloir supprimer ce projet?"),
'class'=>'del'
)); ?>
Ce lien fonctionne quand on ne change pas de numéro de page. Si on passe en page 2, il supprime l’équivalent de la page 1.
Les boutons "linkButton" génère ce code javascript:
[CODE]jQuery(‘body’).delegate(’#yt0’,‘click’,function(){if(confirm(‘Êtes-vous sur de vouloir supprimer ce projet?’)) {jQuery.yii.submitForm(this,’/Yii/test/admin/projet/delete/id/1’,{});return false;} else return false;});
jQuery(‘body’).delegate(’#yt1’,‘click’,function(){if(confirm(‘Êtes-vous sur de vouloir supprimer ce projet?’)) {jQuery.yii.submitForm(this,’/Yii/test/admin/projet/delete/id/2’,{});return false;} else return false;});
etc[/CODE]
Simplement, les boutons générés en ajax sur la page 2 ont le même code source que les boutons de la page 1
<a class="del" href="#" id="yt1">Supprimer</a>
Donc quand on clique sur le bouton de l’item 21, ça supprime le 1.
Emmerdant…
Avec ça:
[PHP]<?php echo CHtml::linkButton(Yii::t(‘app’,“Supprimer”),array(
'submit'=>array('projet/delete','id'=>$data->id),
'confirm'=>Yii::t('app',"Êtes-vous sur de vouloir supprimer ce projet?"),
'class'=>'del',
'id' => 'item_'.$data->id
)); ?>[/PHP]
J’obtiens:
[CODE]jQuery(‘body’).delegate(’#item_1’,‘click’,function(){if(confirm(‘Êtes-vous sur de vouloir supprimer ce projet?’)) {jQuery.yii.submitForm(this,’/Yii/test/admin/projet/delete/id/1’,{});return false;} else return false;});
jQuery(‘body’).delegate(’#item_2’,‘click’,function(){if(confirm(‘Êtes-vous sur de vouloir supprimer ce projet?’)) {jQuery.yii.submitForm(this,’/Yii/test/admin/projet/delete/id/2’,{});return false;} else return false;});
});[/CODE]
<a class="del" href="#" id="item_10">Supprimer</a>
Bingo? Non, le code javascript ci-dessus n’est généré que pour les items de la première page, les autres se chargeant en ajax.
Comment faites-vous pour utiliser un bouton delete dans vos admin? avec un système de pagination, sans utiliser CGridView (l’utilisation en tableau ne me convient pas).
Merci d’avance, parce que j’ai beau chercher, je ne trouve pas de solutions. Mon problème n’a pas l’air d’être évoqué sur le forum anglais…