Agile Toolkit - Grid не перезагружается - что мне не хватает?

У меня была перезагрузка сетки, работающая после отправки формы во всплывающем окне, но теперь я изменил все вокруг и по какой-то причине он перестал работать и не могу понять, почему...

РЕДАКТИРОВАТЬ: см. Комментарий ниже...

По сути, страница "детали" раньше была не подстраницей этой страницы, а отдельным файлом.php, я предпочитаю подход подстраниц, но я, должно быть, где-то облажался при переходе... Я отредактировал некоторые вещи, которые только сделает это труднее читать.

Кто-нибудь видит, что мне не хватает или куда я иду не так?

class page_liststuff extends Page {
    function initMainPage(){
    // parent::init();

    $grid = $this->add('Grid');
    $this->js('reload_grid',$grid->js()->reload());

$grid->addColumn('button','edit');
$grid->addButton('Refresh')->js('click', $grid->js()->reload());

if($_GET['edit']){
    $this->js()->univ()->frameURL('Edit',$this->api->url('details'))->execute();
}

}

function defaultTemplate(){
    return array('page/detail');
}

function page_details(){

    $m = $this->setModel('Stuff');
$f1 = $stap1->add('Form');
$f1->addSubmit('Save');

if ($f1->isSubmitted()){
    try {
            $f1->update();
    $f1->js()->univ()
    ->successMessage('Success!')
    //->closeDialog()
    ->getjQuery()->trigger('reload_grid')
    ->execute();

        } catch(Exeception $e) {
            $f1->js()->univ()->alert('Fail!')->execute();
        }
}
  }

}

1 ответ

Решение

Вы можете использовать любые параметры виджета JQuery UI Dialog в своих интересах, например:

$options = array(
    'closeOnEscape' => false, // http://api.jqueryui.com/dialog/#option-closeOnEscape
    'dialogClass' => 'no-close',
);

$this->js()->univ()
    ->frameURL('Edit', $this->api->url('./details'), $options, $callback)
    ->execute();

Просто чтобы скрыть кнопку закрытия, для этого гораздо проще использовать CSS, как описано здесь: http://api.jqueryui.com/dialog/ в параграфе "Скрытие кнопки закрытия".

В некоторых случаях вы можете скрыть кнопку закрытия, например, если у вас есть кнопка закрытия на панели кнопок. Лучший способ сделать это с помощью CSS. В качестве примера вы можете определить простое правило, например:

.no-close .ui-dialog-titlebar-close {
  display: none;
}

Затем вы можете просто добавить класс no-close в любой диалог, чтобы скрыть кнопку закрытия:

$( "#dialog" ).dialog({
  dialogClass: "no-close",
  buttons: [{
    text: "OK",
    click: function() {
      $( this ).dialog( "close" );
    }
  }]
});
Другие вопросы по тегам