2014-09-27 3 views
2

Я использую версию 1.4.1 из w2ui Grid. Я пытаюсь сделать inline edit во время загрузки данных с сервера с помощью urls property. неW2UI Сетка встроенного редактирования с источником данных

$(function() { 
    $('#grid').w2grid({ 
     name: 'grid', 
     // begin block that causes grid to be uneditable 
     // url: { 
     // get : '<?php echo site_url('sections')?>/all', 
     // save : '<?php echo site_url('sections')?>/save' 
     // }, 
     // end block that causes grid to be eneditable 
     show: { 
      toolbar: true, 
      footer: true, 
      toolbarSave: true, 
      toolbarEdit: true 
     }, 
     columns: [ 
        { 
         field: 'code', 
         caption: 'Code', 
         size: '120px', 
         sortable: true, 
         resizable: true, 
         editable: { 
          type: 'text' 
         } 
        } 
        ], 
     // this records array can be removed once the urls are added back 
     records: [ 
      { recid: 1, code: '100' } 
     ] 

    });  
}); 

Если я раскомментировать «URL» блок, поле «код» на сетке больше не доступны для редактирования по двойному щелчку. Если я удалю его, это так. У кого-нибудь есть рабочий пример динамической загрузки данных с сервера, а также возможность встроенного редактирования?

ANSWER Как описано ниже, моя структура возврата была неправильной. Я использую CodeIgniter (CI) на заднем конце и мой метод управления выглядит следующим образом:

public function all() { 
    $data = $this->myModel->findAll(); 
    $gridData = new W2GridData ($data); 
    echo $gridData->toJson(); //important to put "echo" here and not "return" 
} 

где метод FindAll() в моей модели класса:

function findAll() { 
     $query = $this->db->get (TABLE_NAME); 
     return $query->result(); 
    } 

и мой класс утилита для упаковки результат CI дБ теперь:

<?php 
class W2GridData { 
    var $total = "-1"; 
    var $records = "-1"; 
    function __construct($items) { 
     $this->records = $items; 
     $this->total = count ($this->records); 
    } 
    function toJson() { 
     $strValue = json_encode ($this); 
     return str_replace ("\"id\":", "\"recid\":", $strValue); // this line was missing 
    } 
} 

Как вы можете видеть, я возвращался «идентификатор» прямо из БД, а не переводить его То'с w2ui предпочтительный «RECID», таким образом, сетка не рендеринга правильно.

ответ

2

Я принял ваш код точно, как это, раскованный URL-адрес и удаленные записи. Кроме того, я связал его со статическим файлом JSON (не должен отличаться, если вы привязываете его к php, который возвращает JSON). Однако после того, как сетка была заполнена с сервера, встроенное редактирование работало отлично. Я использовал версию 1.4.1. Мое лучшее предположение заключается в том, что либо (1) у вас ошибка javascript в консоли, либо (2) сервер не возвращает правильную структуру. Вот мой JSON файл:

{ 
    "total": "3", 
    "records": [{ 
    "recid": 1, 
    "code": "Some" 
    }, { 
    "recid": 2, 
    "code": "Another" 
    }, { 
    "recid": 3, 
    "code": "More" 
    }] 
} 
+0

спасибо Виталию, что это было. я обновлю вопрос выше с помощью решения – dev

-1

Мой простой способ добавить свойство RECID: 'идентификатор'

$('#grid').w2grid({ 
    name: 'grid', 
    recid : 'id' 
    }); 
+0

Добро пожаловать в SO, код не кажется полным, конечно отсутствует)} –

+0

Также было бы целесообразно включить краткое объяснение того, почему вы сделали это и почему это работает, чтобы помогите избежать голосов. – Klors

Смежные вопросы