Ublaboo/datagrid Stránka se nepřekresluje pomocí Ajaxu

r2294743
Člen | 16
+
0
-

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
+
0
-

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?

r2294743
Člen | 16
+
0
-

Zavolá se metoda redrawControl ($this[‚guestList‘]->redrawControl($id);), ale snippet se nepřekreslí.

Editoval r2294743 (10. 3. 2018 15:53)

IJVo
Člen | 38
+
0
-

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