У меня есть сетка с использованием CGridView, и когда я пытаюсь ее обновить, я получаю эту ошибку. пытаясь решить эту проблему надолго и все еще не может заставить ее работать. Я не уверен, что мне не хватает.обновление CGridView с ajax не работает
следующее, что я использую, чтобы заставить сетку обновляться при нажатии кнопки.
$('#sessions .refreshdata').live('click', function(e) {
e.preventDefault();
$.fn.yiiGridView.update('sessions-grid');
}
);
ошибка приходит это,
TypeError: settings is undefined
$grid.addClass(settings.loadingClass);
Я понятия не имею, откуда это вызывает.
EDIT 1,
Я попытался с установкой выходной процесс истинный, а затем он работал, но он испортил с моим UI и других необходимых скриптов в одной и той же странице.
$this->getController()->renderPartial('sessionGrid', $params, false, true);
Я начал получать gridview по умолчанию yii и его стили. путайте, почему это происходит.
Сортировка также не работает в той же сетке. Когда я нажимаю на ссылку сортировки имени столбца, она обновляет страницу и переводит меня на другую страницу. поэтому Ajax полностью не работает в этом случае.
EDIT 2,
Ниже пути также впадина работы, как предложено в ОТВЕТА 1
console.log('came in');
e.preventDefault();
$.fn.yiiGridView({ 'ajaxUpdate':['sessions-grid'] });
console.log('came out');
как я могу заставить эту сетку, чтобы обновить или обновить?
EDIT 3,
Когда я использую нормальный путь, ошибка появляется из jquery.yiigridview.js. настройки не определены - строка 203 .. $ grid.addClass (settings.loadingClass);
return this.each(function() {
var $form,
$grid = $(this),
id = $grid.attr('id'),
settings = gridSettings[id];
$grid.addClass(settings.loadingClass);
EDIT 4, я здесь ниже, скопировав код cgridview и действие.
<?php TK::registerCssFile('grid');?>
<div id="sessions">
<h4><?php echo Yii::t('activity', (isset($model->activity->name) ? $model->activity->name . ' Sessions' : 'Sessions')) ?></h4>
<?php $this->beginContent('application.views.templates.form', array('options'=>array('id'=>'sessions-form'))); ?>
<?php echo CHtml::hiddenField('activities_id', $model->activities_id); ?>
<?php echo CHtml::hiddenField('source', $source); ?>
<?php
$this->widget('application.components.SGridView', array(
'id'=>'sessions-grid',
'dataProvider'=>$model->search(),
'filter'=>$model,
'emptyText'=>(!empty($model->activities_id)) ? 'No results found.' : 'Please select activity from top grid.',
'showNew'=>(!empty($model->activities_id) && Yii::app()->user->checkAccess("piActivitySessionsCreate") && $model->activity->source === 'iJOB') ? true : false,
'newButtonCss'=>'new dialog-link-session',
'createUrl'=>Yii::app()->controller->createUrl("/activities/default/sessionCreate", array("activities_id"=>$model->activities_id)),
//'showExport'=>true,
'columns'=>array(
/*
array('type'=>'raw',
'value'=>'CHtml::hiddenField("ActivitySession[$data->id]", false, array(\'value\'=>$data->id))',
'htmlOptions'=>array('style'=>'width:0%;'),
'headerHtmlOptions'=>array('style'=>'width:0%;')),
*/
array('name'=>'site_id',
//'value'=>'CHtml::link($data->sites->code, "#", array("title"=>$data->sites->name))',
//'value'=>'CHtml::label($data->sites->code, null, array("title"=>$data->sites->name))',
'value'=>'$data->sites!=null ? CHtml::tag("div", array("title"=>$data->sites->name), $data->sites->code) : ""',
'type'=>'raw',
'htmlOptions'=>array('style'=>'width:16%;'),
'headerHtmlOptions'=>array('style'=>'width:16%;')),
array('name'=>'location',
'htmlOptions'=>array('style'=>'width:30%;'),
'headerHtmlOptions'=>array('style'=>'width:30%;')),
array('name'=>'start_time',
'value'=>'Yii::app()->dateFormatter->formatDateTime($data->start_time, "medium", "short")',
'htmlOptions'=>array('style'=>'width:15%;'),
'headerHtmlOptions'=>array('style'=>'width:15%;')),
array('name'=>'end_time',
'value'=>'Yii::app()->dateFormatter->formatDateTime($data->end_time, "medium", "short")',
'htmlOptions'=>array('style'=>'width:15%;'),
'headerHtmlOptions'=>array('style'=>'width:15%;')),
/*
array('name'=>'max_positions',
'htmlOptions'=>array('style'=>'width:6%;'),
'headerHtmlOptions'=>array('style'=>'width:6%;')),
*/
array('name'=>'closed',
'value'=>'$data->closed == "1" ? Yii::t("activity", "Yes") : Yii::t("activity", "No")',
'filter'=>array("0"=>Yii::t("activity", "No"), "1"=>Yii::t("activity", "Yes")),
'htmlOptions'=>array('style'=>'width:6%;text-align:left;'),
'headerHtmlOptions'=>array('style'=>'width:6%;')),
array('name'=>'registered',
'type'=>'raw',
'value'=>'$data->registeredCount . \'/\' . $data->max_positions',
'filter'=>false,
'sortable'=>true,
'htmlOptions'=>array('style'=>'width:8%;text-align:right;padding-right:15px'),
'headerHtmlOptions'=>array('style'=>'width:8%;')),
array('class'=>'CButtonColumn',
'template'=>'{users} {view} {update} {delete}',
'header'=>Yii::t("activity","Actions"),
'headerHtmlOptions'=>array('style'=>'width:10%;'),
'htmlOptions'=>array('style'=>'width:10%;'),
'buttons'=>array(
'users'=>array(
'visible'=>'(Yii::app()->user->checkAccess("piActivityJobseekerRead") || Yii::app()->user->checkAccess("piActivityJobseekerUpdate")) ? true : false',
'url'=>'Yii::app()->controller->createUrl("/activities/participants/index", array("session_id"=>$data->id))',
'imageUrl'=>Yii::app()->request->baseUrl.'/images/base/users.png',
'options'=>array(
//'class'=>'users dialog-link-session',
'title'=>Yii::t('activity', 'Participants'),
),
),
'view'=>array(
'visible'=>'(Yii::app()->user->checkAccess("piActivitySessionsRead") &&
!Yii::app()->user->checkAccess("piActivitySessionsUpdate") && $data->activity->source === "iJOB") ||
($data->activity->source === "ESS") ? true : false',
'url'=>'Yii::app()->controller->createUrl("/activities/default/sessionView", array("id"=>$data->id))',
'options'=>array('class'=>'view dialog-link-session'),
),
'update'=>array(
'visible'=>'(Yii::app()->user->checkAccess("piActivitySessionsUpdate") && $data->activity->source === "iJOB") ? true : false',
'url'=>'Yii::app()->controller->createUrl("/activities/default/sessionUpdate", array("id"=>$data->id))',
'options'=>array('class'=>'update dialog-link-session'),
),
'delete'=>array(
'visible'=>'(Yii::app()->user->checkAccess("piActivitySessionsDelete") && $data->activity->source === "iJOB") ? true : false',
'url'=>'Yii::app()->controller->createUrl("/activities/default/sessionDelete", array("id"=>$data->id))',
'options'=>array('class'=>'delete dialog-link-session'),
),
),
),
array('type'=>'raw',
'value'=>'$data->registeredCount',
'htmlOptions'=>array('style'=>'display:none;'),
'headerHtmlOptions'=>array('style'=>'display:none;'),
),
),
));
?>
<?php $this->endContent(); ?>
</div>
<style type="text/css">
.grid-view-body
{
height: 170px;
}
</style>
И в действии ....
public function run()
{
Yii::app()->clientScript->scriptMap['*.js'] = false;
$activities_id = (TK::get('activities_id') ? TK::get('activities_id') : (TK::post('activities_id') ? TK::post('activities_id') : 0));
$source = (TK::get('source') ? TK::get('source') : (TK::post('source') ? TK::post('source') : 'iJOB'));
if ($activities_id === null)
throw new CHttpException(500, Yii::t('activity', 'The requested activity does not exist.'));
$model = new ActivitySession('search');
$model->unsetAttributes();
$model->activities_id = $activities_id;
$model->closed = null;
if (isset($_GET['ActivitySession']))
$model->attributes = $_GET['ActivitySession'];
$params = array('model'=>$model, 'source'=>$source);
if (Yii::app()->request->isAjaxRequest)
$this->getController()->renderPartial('sessionGrid', $params, false, true);
else
$this->getController()->renderPartial('sessionGrid', $params, false, true);
}
Тогда у меня есть GridView, как показано ниже вместе с кнопкой обновления ...
После создания porcessedOutput = true, обновленный старт работает, но каждый раз он увеличивается на единицу .. поэтому обновление теперь происходит несколько раз .. ниже - это захват, который произошел 3 раза.
Как я могу остановить это освежающее событие несколько раз, это мой вопрос.
Эта проблема возникает во всех браузерах? –
@ DanielVaquero да, это происходит во всех, и сетка не обновляется нажатием кнопки. PLS проверить отредактированный раздел этого вопроса выше. – dev1234
и сортировка по колонкам работает? –