CGridView ajax редактирование

Общие вопросы по использованию фреймворка. Если не знаете как что-то сделать и это про Yii, вам сюда.
navy
Сообщения: 21
Зарегистрирован: 2010.11.15, 12:59

Re: CGridView ajax редактирование

Сообщение navy »

Maxym писал(а):Использую jeditеtable, как в примере выше.Все работает отлично, но после $.fn.yiiGridView.update('modelGrid',{data:{ }}); , компонент перестает работать. Т.е. когда на него нажимаешь то ничего не происходит.подскажи в чем может быть проблема???
Нужно после обновления грида заново инициализировать jeditable

Код: Выделить всё

$this->widget('zii.widgets.grid.CGridView', array(
    ...
    'afterAjaxUpdate'=>'function(id, data) { updateInlineEdit(); }',
В приведенном примере это делается в функции updateInlineEdit()
Maxym
Сообщения: 3
Зарегистрирован: 2013.01.05, 04:01

Re: CGridView ajax редактирование

Сообщение Maxym »

'afterAjaxUpdate'=>'function(id, data) { setInlineEdit(); }', ?? не updateInlineEdit а setInlineEdit ??
navy
Сообщения: 21
Зарегистрирован: 2010.11.15, 12:59

Re: CGridView ajax редактирование

Сообщение navy »

Maxym писал(а):'afterAjaxUpdate'=>'function(id, data) { setInlineEdit(); }', ?? не updateInlineEdit а setInlineEdit ??
В общем да, updateInlineEdit это уже моя функция где я вызываю setInlineEdit();

Сейчас для подобных целей использую http://x-editable.demopage.ru/ там возможностей побольше.
bicerinka
Сообщения: 2
Зарегистрирован: 2013.07.26, 14:24

Re: CGridView ajax редактирование

Сообщение bicerinka »

Делаю как написал navy, все отлично работает.
Редактируется текст, а как можно сделать редактирование выпадающим списком?
Так появляется пустой select:

Код: Выделить всё

 'value'=>'Tools::inlineEdit($data, "level", "select")',
Как можно передать значения option?
bicerinka
Сообщения: 2
Зарегистрирован: 2013.07.26, 14:24

Re: CGridView ajax редактирование

Сообщение bicerinka »

Получилось так - в функции setInlineEdit()

Код: Выделить всё

if(type=='select' ) {
     data = '{1:1,2:2,3:3}';  // value/option
}
    $(this).editable('/controlle/action', {
        placeholder : '---',
        indicator : 'Save...',
        tooltip   : 'Click to edit',
        type     : type,
        rows: 3,
        cols: 30,
        submit   : s,
        cancel   : c,
        width: width,
        data   :  data,
        submitdata : params,
        callback  : function(value, settings) {
             $.fn.yiiGridView.update('grid-id',{data:{ }});
          }
     });
 
Barry
Сообщения: 8
Зарегистрирован: 2013.05.29, 11:14

Re: CGridView ajax редактирование

Сообщение Barry »

Доброго всем времени суток!

Я пытаюсь сделать редактирование поля "is_a", в котором может содержаться либо 0, либо 1 в CGridView с помощью выпадающего списка:

Код: Выделить всё

'columns'=>array(
       array('name'=>'is_a', 'type'=>'raw', 'value'=>'Tools::inlineEdit($data->is_a == 1 ? "Активен" : "Заблокирован", "is_a", "select")') 

Код: Выделить всё

<?php $cs->registerScript('inline', "
function setInlineEdit() {

  $('.inlineEdit').each(function(){
    var params = {field: $(this).attr('field')};
    var type = $(this).attr('type');

    $(this).editable('/UpdateStatus', {
        placeholder : '---',
        indicator : 'Сохранение...',
        tooltip   : 'Кликните, чтобы редактировать',
        data   : \"{'0':'Заблокирован', '1':'Активен'}\",
        type   : type,
        submit   : 'OK',
        submitdata : params,
        callback  : function(value, settings) {
             $.fn.yiiGridView.update('modelGrid',{data:{ }});
          }
     });

  });
}
");
Обновление значения в БД выполняется, но в самом CGridView вместо надписей "Активен" и "Заблокирован" выводится один символ - вопросительный знак. К тому же, если указать любое другое значение,число или строку, все равно выводится только один символ. Кроме того, выбранным элементом в появляющимся списке всегда является первый, т.е. все выглядит так, что value не передается/не принимается. В чем может быть проблема?
Ответить