Ublaboo/datagrid Stránka se nepřekresluje pomocí Ajaxu
- r2294743
- Člen | 16
Měl bych dotaz ohledně překleslování. Při obnovení stránky se mi správně přepíše status, ale ajaxem se nic neprovede.
Předem děkuji za pomoc
<?php
public function createComponentGuestList($name)
{
$grid = new DataGrid($this, $name);
$id = $this->getParameter('id');
$grid->setDataSource($this->pluginFacade->getGuestList($id));
$grid->addColumnStatus('status', 'Status')
->setSortable()
->addOption("paid", 'Paid')
->setClass('btn-success')
->endOption()
->addOption("unpaid", 'Unpaid')
->setClass('btn-danger')
->endOption()
->onChange[] = [$this, "changeStatus"];
$grid->addFilterMultiSelect('status', 'Status:', [
"paid" => 'Paid',
"unpaid" => 'Unpaid'
]);
}
public function changeStatus($id, $status)
{
$this->pluginFacade->changeUserPaidEvent($id, $status);
$this->flashMessage("Status was updated to $status.", 'success');
if ($this->isAjax()) {
$this->redrawControl('flashes');
$this['guestList']->redrawControl($id);
} else {
$this->redirect('this');
}
}
function renderView($event){
$this->template->event = $this->pluginFacade->getEvent($event);
}
?>
- petr.pavel
- Člen | 535
Moc nerozumím tvému popisu chyby.
Myslíš to tak, že se ti spustí onChange
(tj. zavolá metoda
changeStatus
), ale když to je v ní, tak isAjax
vrátí false
?
Nebo vrátí true
, metody redrawControl
se ti
zavolají, ale v odpovědi serveru není HTML s překreslenými snippety?
- IJVo
- Člen | 38
r2294743 napsal(a):
Zavolá se metoda redrawControl, ale snippet se nepřekreslí.
No, já myslím, že tam má být
$this['guestList']->redrawItem($id);
viz. dokumentaci zde: https://ublaboo.org/datagrid/action