#gridview #yii #pjax
#просмотр сетки #иии #pjax #gridview #yii
Вопрос:
Я новичок в Yii. Я добавил класс, в который я загружаю средство выбора даты, у которого есть свойство showButtonPanel, и оно работает хорошо, но когда я нажимаю на reset grid или когда выполняется код pjax, то datepicker работает хорошо, но почему-то кнопки на datepicker не видны или свойство showButtonPanel не работает. Вот код для этого.
$(document).ready(function() {
callDatePickers();
});
function callDatePickers() {
$('.anyDayDatePicker').datepicker({
autoclose: true,
pickTime: false,
dateFormat: 'dd-M-yy',
defaultDate: new Date(),
showButtonPanel : true,
closeText: 'Clear',
onClose: function () {
var event = arguments.callee.caller.caller.arguments[0];
if ($(event.delegateTarget).hasClass('ui-datepicker-close')) {
$(this).val('');
}
}
}).focus(function (input ) {
console.log("Hello");
$(input).datepicker('widget').find('.ui-datepicker-current').hide();
$('.ui-datepicker-close').addClass('clear-date-btn');
});
}
и в index.php
<?php yiiwidgetsPjax::begin(['enablePushState' => false, 'id' => 'ictmsTrialEventFrom', 'formSelector' => '#ictms-search-form']); ?>
<?=
GridView::widget([
'id' => 'crud-datatable',
'dataProvider' => $dataProvider,
'filterModel' => $searchModel,
'pjax' => false,
'columns' => require(__DIR__ . '/_columns.php'),
])
?>
<?php yiiwidgetsPjax::end() ?>
columns.php
[
'class' => 'kartikgridDataColumn',
'attribute' => 'actual_date',
'width' => '15%',
'value' => function($model) {
if (isset($model['actual_date'])) {
return date(Yii::$app->params['dateFormat'], strtotime($model['actual_date']));
}
},
'filter' => yiijuiDatePicker::widget([
'model' => $searchModel,
'attribute' => 'actual_date',
'language' => 'ru',
'dateFormat' => 'dd-MM-yyyy',
'options' => ['class' => 'anyDayDatePicker'],
]),
],
Кто-нибудь может дать мне решение, почему showButtonPanel не работает после pjax? Заранее благодарю.
Комментарии:
1. смогли ли вы решить проблему?
Ответ №1:
Вы должны скорее вызывать свой скрипт по pjax:end
событию, чтобы всякий раз, когда загрузка / перезагрузка PJAX завершается заменой содержимого на страницу, вызывался ваш скрипт
Поэтому замените следующий код
$(document).ready(function() {
callDatePickers();
});
со следующим
$(document).on('ready pjax:end', function(event) {
callDatePickers();
});
Комментарии:
1. Я пробовал это, но в конце pjax я могу получить оповещение, но showButtonPanel по-прежнему не работает
2. @Amarja не работает , не очень помогает, можете ли вы объяснить, какие у вас возникают ошибки при нажатии на кнопку