插入Ext-js后在网格中保存记录

时间:2011-10-23 19:57:12

标签: 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'],
...

2 个答案:

答案 0 :(得分:1)

您还需要结束编辑,否则商店无法进行任何更改。使用firebug检查,你的商店正在储蓄。您也可以使用自动保存:TRUE来保存提交

答案 1 :(得分:1)

根据您在初始问题中的评论,您按如下方式定义了商店:

    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
    });

另请注意,您需要一个可以接听来电的网址。这很可能是一个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文件。

阅读thisthis以获得更多说明。