Datagrid ublaboo onChange
- Gavrilo
- Člen | 46
Ahojte,
mohol by mi niekto poradiť ako rozbehnúť onChange v datagride ?
$grid->addColumnStatus('admin', 'Oprávnenie')
->addOption(1, 'Správca')
->setClass('btn-success')
->endOption()
->addOption(0, 'Uživateľ')
->setClass('btn-primary')
->endOption()
->onChange[] = [$this, 'changeAdminStatus'];
A v podstate tu som skončil a neviem čo ďalej vytvoriť si funkciu a naplniť ju query alebo ? Niečo takéto ?
public function changeAdminStatus(){
}
Ďakujem za každú radu
- igor.pocta
- Člen | 100
Po kliknutí na select se ti zavolá metoda changeAdminStatus, do které jsou předány dva parametry: id řádku a hodnota, kterou jsi vybral. To si musíš zpracovat, např. uložením do DB.
public function changeAdminStatus($id, $value) {
// Uložení stavu $value do záznamu $id
}
public function changeAdminStatus($id, $value) {
// Jen ukázka, https://doc.nette.org/cs/database/explorer#toc-insert-update-delete
$this->db->table('users')
->where('id', $id)
->update([
'status' => $value
]);
}
Editoval igor.pocta (2. 10. 2017 22:53)
- igor.pocta
- Člen | 100
Gavrilo napsal(a):
A niečo na opätovné vykreslenie sa tam nevolá ? Pretože query prebehne ale status mi zobrazí ako zmenení až po obnovení (manuálnom) a samozrejme Ďakujem …
To je možné (redrawItem), je to přímo v referenčním zdroj. kódu
public function statusChange($id, $new_status)
{
if (in_array($new_status, [0, 1, 2])) {
$this->ndb->table('ublaboo_example')
->where('id = ?', $id)
->update(['status' => $new_status]);
}
$status_text = ['offline', 'online', 'standby'][$new_status];
$this->flashMessage("Status of category [$id] was updated to [$status_text].", 'success');
if ($this->isAjax()) {
$this->redrawControl('flashes');
$this['columnsGrid']->redrawItem($id);
}
}
- Gavrilo
- Člen | 46
public function changeAdminStatus($id, $value)
{
$this->userManager->update($id, [
'admin' => $value
]);
$permission_text = ['Správca', 'Uživateľ'][$value];
$this->flashMessage("Status of category [$id] was updated to [$permission_text].", 'success');
if ($this->isAjax()) {
$this->redrawControl('flashes');
$this['simpleGrid']->redrawItem($id);
}
}
Niekde robím chybu a neviem kde nejako mi to nechce bežať…
$grid->addColumnStatus('admin', 'Oprávnenie')
->addOption(1, 'Správca')
->setClass('btn-success')
->endOption()
->addOption(0, 'Uživateľ')
->setClass('btn-primary')
->endOption()
->onChange[] = [$this, 'changeAdminStatus'];