Сохранение записи в сетке после вставки в Ext-js

#extjs

#extjs

Вопрос:

У меня есть сетка с хранилищем, и я добавляю запись в хранилище, и данные, добавляемые в хранилище, отражаются в сетке. но после обновления они исчезают.

вот мой код для вставки записи

 handler: function() {

    grid.getStore().insert(
        0,
        new ds_model({
            id:0,
            name:'',
            dob:''
        })
    );

    grid.startEditing(0,0);
    grid.store.commitChanges();

    } 
}) 
 

Редактировать:

 var store = new Ext.data.Store({
    data: [
        [ 11849,'ABC','29/03/90'],
        [ 11456,'CDE','17/03/90'],
        [ 11344,'EFG','17/07/90'],
        [ 11343,'IJK','Trainee','02/06/90'],
...
 

Комментарии:

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

2. ok.var store = новые внешние данные. Сохранить({ данные: [ [ 11849,’ABC’,’29/03/90′], [ 11456,’ CDE’,’17/03/90′], [ 11344,’ EFG’,’17/07/90′], [ 11343,’ IJK», «Стажер», «02/06/90»],

Ответ №1:

Вам также необходимо завершить редактирование, иначе хранилище не сможет зафиксировать изменения. используйте firebug, чтобы проверить, сохраняется ли ваше хранилище. Вы также можете использовать автосохранение: TRUE, чтобы сэкономить фиксацию

Комментарии:

1. ОК. Итак, перед внесением каких-либо изменений я должен остановить редактирование??

Ответ №2:

Согласно вашим комментариям в первоначальном вопросе, вы определили свое хранилище следующим образом:

     new Ext.data.Store({
        data: [
            [ 11849,'ABC','29/03/90'],
            [ 11456,'CDE','17/03/90'],
            [ 11344,'EFG','17/07/90'],
            [ 11343,'IJK','Trainee','02/06/90']
        ]
    });
 

Это не приведет к автоматическому сохранению на любом внутреннем сервере. Кроме того, вы жестко кодируете данные в хранилище, что означает, что при перезагрузке вы буквально каждый раз помещаете эти данные в хранилище. Чтобы упростить сохранение и загрузку в / из серверной части, вам просто нужно изменить ее как таковую:

     new Ext.data.Store({
        autoSync: true,  // this will tell Ext to persist your changes
                         // to the backend when you change an entry in the store
        autoLoad: true,  // this will tell Ext to load the store with data from
                         // the backend
        url: // put your url to save
    });
 

Также обратите внимание, что вам понадобится URL, который будет ожидать вызова от этого. Скорее всего, это будет php-файл. В зависимости от того, что вы вставляете в сетку, вам понадобится что-то вроде этого в файле php:

 myFile.php
==========

    <?php
        $id = $_POST['id'];  // get id from client
        $name = $_POST['name'];  // get name from client
        $dob = $_POST['dob'];  // get date of birth from client

        // do any saving of this data, e.g, to your database here
    ?>
 

Кроме того, вам понадобится php-файл, который будет выполнять загрузку хранилища.

Прочитайте это и это для получения дополнительных разъяснений.