Редактировать данные в таблице gridview
Редактировать данные в таблице gridview
Добрый вечер. Такого решения к сожалению нигде не нашёл. Суть вопроса: есть ли решение или кто-либо делал, либо просто натолкнете, есть задумка сделать редактирование данных прямо в таблице gridview ( как я представляю в ячейках выводить данные в input ) с сохранением их в БД ( после того как поле стало не активным ). Как-то так...
Re: Редактировать данные в таблице gridview
как вы искали очень интересно ?Shleif91 писал(а):Такого решения к сожалению нигде не нашёл.
я ввел в гугле "yii2 gridview editable"
и вот что нашел ...
http://yiiframework.ru/forum/viewtopic.php?t=31783
Re: Редактировать данные в таблице gridview
Лучше опозориться спросив, чем самому не найти решения... Реально даже находил этот виджет, но не знал что в нем можно сделать такое... А запросы я не editable делал, а почему-то gridview ajax и т.п.
Спасибо большое за то, что ткнули носом
Спасибо большое за то, что ткнули носом
Re: Редактировать данные в таблице gridview
Я прошу простить, но кто работал с этим: http://demos.krajee.com/builder-details ... m#comments, в частности Scenario 2 Advanced Grid Layout, подскажите как сделать поля в своём gridview (от kartik) input-ами?? Не могу допереть, как-то все сложно для меня что ли... Спасибо...
Re: Редактировать данные в таблице gridview
1. Это форум по фреймворку
2. Вы задали вопрос не в той теме.
3. Если всё сложно и не понятно, зачем использовать сторонние монструознонаписанные виджеты?
2. Вы задали вопрос не в той теме.
3. Если всё сложно и не понятно, зачем использовать сторонние монструознонаписанные виджеты?
Re: Редактировать данные в таблице gridview
Ок. Будем изобретать велосипед)
Re: Редактировать данные в таблице gridview
Тоже понадобился такой функционал. Разобрался в настройке и форматировании DataColumn в GridView.
В итоге вот что получилось:
Во view, где выводим GridView, column, который нужно редактировать прямо в гриде, прописывам так:
Классно, что html::beginForm сама заботится о _csrf параметре.
в JS-файле приложения пишем небольшой код (этот код будет работать для всех подобных ситуаций):
и в контроллере в стандартном actionUpdate добавляем пару строк:
Думаю, не составит сложностей аналогичным образом вставить и dropdown, и чекбоксы.
В итоге вот что получилось:
Во view, где выводим GridView, column, который нужно редактировать прямо в гриде, прописывам так:
Код: Выделить всё
<?= GridView::widget([
'dataProvider' => $dataProvider,
'columns' => [
...
[
'attribute' => 'name',
'value' => function ($data) {
$html = html::beginForm(Url::to(['category/update', 'id' => $data->id]));
$html .= html::activeTextInput($data, 'name', ['class' => 'form-control grid-editable', 'label' => false]);
$html .= html::endForm();
return $html;
},
'format' => 'raw',
],
...
],
]); ?>
в JS-файле приложения пишем небольшой код (этот код будет работать для всех подобных ситуаций):
Код: Выделить всё
$('.grid-editable').on('change', function() {
let cur_input = $(this),
cur_form = $(this).closest('form'),
formData = cur_form.find('input, select'),
action = cur_form.attr('action');
$.ajax({
url: action + '&inplace_edit=1',
data: formData,
type: 'POST',
dataType: 'json',
success: function (data) {
if (data === '1') {
cur_input.addClass('updated');
}
}
});
});
Код: Выделить всё
public function actionUpdate($id)
{
$model = $this->findModel($id);
if ($model->load(Yii::$app->request->post()) && $model->save()) {
if (Yii::$app->request->get('inplace_edit', '0') == '1') {
return \yii\helpers\Json::encode('1');
} else {
return $this->goBack();
}
}
return $this->render('update', [
'model' => $model,
]);
}