extjs学习札记(六) grid中数据的保存,添加和删除

extjs学习笔记(六) grid中数据的保存,添加和删除

  在上一个系列当中,我们学习了如何对grid中的内容进行编辑,但是编辑的结果我们并没有保存,这在实际的应用中是没有什么意义的。在有些情况下,除了编辑之外,还要通过grid进行数据的增加和删除,这两个操作也涉及到对于数据的保存。在这个系列里边,我们将学习如何保存数据以及通过grid对数据进行增加和删除。

    我们在前边的学习过程中已经知道,grid其实只是显示数据,它通过配置参数store来获得数据,这个参数需要的是Store类或者其子类的一个对象,里边封装了我们需要的数据。我们现在应该已经比较熟悉Store类了,这次我们需要使用它的一个属性modified,里边保存了被修改过的记录的集合。我们通过把上个系列中的例子改变一下来看看如何保存数据:

<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->  1extjs学习札记(六) grid中数据的保存,添加和删除///<reference path="vswd-ext_2.0.2.js" />
  2extjs学习札记(六) grid中数据的保存,添加和删除extjs学习札记(六) grid中数据的保存,添加和删除/**//*
  3extjs学习札记(六) grid中数据的保存,添加和删除*作者:大笨
  4extjs学习札记(六) grid中数据的保存,添加和删除*日期:2009-10-20
  5extjs学习札记(六) grid中数据的保存,添加和删除*版本:1.0
  6extjs学习札记(六) grid中数据的保存,添加和删除*博客地址:http://yage.cnblogs.com
  7extjs学习札记(六) grid中数据的保存,添加和删除*QQ:14202190
  8extjs学习札记(六) grid中数据的保存,添加和删除*/

  9extjs学习札记(六) grid中数据的保存,添加和删除Ext.BLANK_IMAGE_URL = '../extjs/resources/images/default/s.gif';
 10extjs学习札记(六) grid中数据的保存,添加和删除
 11extjs学习札记(六) grid中数据的保存,添加和删除extjs学习札记(六) grid中数据的保存,添加和删除Ext.onReady(function() extjs学习札记(六) grid中数据的保存,添加和删除{
 12extjs学习札记(六) grid中数据的保存,添加和删除    Ext.QuickTips.init();
 13extjs学习札记(六) grid中数据的保存,添加和删除
 14extjs学习札记(六) grid中数据的保存,添加和删除    //格式化日期
 15extjs学习札记(六) grid中数据的保存,添加和删除extjs学习札记(六) grid中数据的保存,添加和删除    function formatDate(value) extjs学习札记(六) grid中数据的保存,添加和删除{
 16extjs学习札记(六) grid中数据的保存,添加和删除        return value ? value.dateFormat('Y年m月d日') : '';
 17extjs学习札记(六) grid中数据的保存,添加和删除    }

 18extjs学习札记(六) grid中数据的保存,添加和删除
 19extjs学习札记(六) grid中数据的保存,添加和删除    // 别名
 20extjs学习札记(六) grid中数据的保存,添加和删除    var fm = Ext.form;
 21extjs学习札记(六) grid中数据的保存,添加和删除
 22extjs学习札记(六) grid中数据的保存,添加和删除    //构造一个只能包含checkbox的列
 23extjs学习札记(六) grid中数据的保存,添加和删除extjs学习札记(六) grid中数据的保存,添加和删除    var checkColumn = new Ext.grid.CheckColumn(extjs学习札记(六) grid中数据的保存,添加和删除{
 24extjs学习札记(六) grid中数据的保存,添加和删除        header: 'Indoor?',
 25extjs学习札记(六) grid中数据的保存,添加和删除        dataIndex: 'indoor',
 26extjs学习札记(六) grid中数据的保存,添加和删除        width: 55
 27extjs学习札记(六) grid中数据的保存,添加和删除    }
);
 28extjs学习札记(六) grid中数据的保存,添加和删除
 29extjs学习札记(六) grid中数据的保存,添加和删除    // 构造ColumnModel
 30extjs学习札记(六) grid中数据的保存,添加和删除extjs学习札记(六) grid中数据的保存,添加和删除    var cm = new Ext.grid.ColumnModel(extjs学习札记(六) grid中数据的保存,添加和删除{
 31extjs学习札记(六) grid中数据的保存,添加和删除extjs学习札记(六) grid中数据的保存,添加和删除        columns: [extjs学习札记(六) grid中数据的保存,添加和删除{
 32extjs学习札记(六) grid中数据的保存,添加和删除            id: 'common',
 33extjs学习札记(六) grid中数据的保存,添加和删除            header: 'Common Name',
 34extjs学习札记(六) grid中数据的保存,添加和删除            dataIndex: 'common',
 35extjs学习札记(六) grid中数据的保存,添加和删除            width: 220,
 36extjs学习札记(六) grid中数据的保存,添加和删除            // 使用上边定义好的别名
 37extjs学习札记(六) grid中数据的保存,添加和删除extjs学习札记(六) grid中数据的保存,添加和删除            editor: new fm.TextField(extjs学习札记(六) grid中数据的保存,添加和删除{
 38extjs学习札记(六) grid中数据的保存,添加和删除                allowBlank: false
 39extjs学习札记(六) grid中数据的保存,添加和删除            }
)
 40extjs学习札记(六) grid中数据的保存,添加和删除extjs学习札记(六) grid中数据的保存,添加和删除        }
extjs学习札记(六) grid中数据的保存,添加和删除{
 41extjs学习札记(六) grid中数据的保存,添加和删除            header: 'Light',
 42extjs学习札记(六) grid中数据的保存,添加和删除            dataIndex: 'light',
 43extjs学习札记(六) grid中数据的保存,添加和删除            width: 130,
 44extjs学习札记(六) grid中数据的保存,添加和删除extjs学习札记(六) grid中数据的保存,添加和删除            editor: new fm.ComboBox(extjs学习札记(六) grid中数据的保存,添加和删除{
 45extjs学习札记(六) grid中数据的保存,添加和删除                typeAhead: true,
 46extjs学习札记(六) grid中数据的保存,添加和删除                triggerAction: 'all',
 47extjs学习札记(六) grid中数据的保存,添加和删除                transform: 'light',
 48extjs学习札记(六) grid中数据的保存,添加和删除                lazyRender: true,
 49extjs学习札记(六) grid中数据的保存,添加和删除                listClass: 'x-combo-list-small'
 50extjs学习札记(六) grid中数据的保存,添加和删除            }
)
 51extjs学习札记(六) grid中数据的保存,添加和删除extjs学习札记(六) grid中数据的保存,添加和删除        }
extjs学习札记(六) grid中数据的保存,添加和删除{
 52extjs学习札记(六) grid中数据的保存,添加和删除            header: 'Price',
 53extjs学习札记(六) grid中数据的保存,添加和删除            dataIndex: 'price',
 54extjs学习札记(六) grid中数据的保存,添加和删除            width: 70,
 55extjs学习札记(六) grid中数据的保存,添加和删除            align: 'right',
 56extjs学习札记(六) grid中数据的保存,添加和删除            renderer: 'usMoney',
 57extjs学习札记(六) grid中数据的保存,添加和删除extjs学习札记(六) grid中数据的保存,添加和删除            editor: new fm.NumberField(extjs学习札记(六) grid中数据的保存,添加和删除{
 58extjs学习札记(六) grid中数据的保存,添加和删除                allowBlank: false,
 59extjs学习札记(六) grid中数据的保存,添加和删除                allowNegative: false,
 60extjs学习札记(六) grid中数据的保存,添加和删除                maxValue: 100000
 61extjs学习札记(六) grid中数据的保存,添加和删除            }
)
 62extjs学习札记(六) grid中数据的保存,添加和删除extjs学习札记(六) grid中数据的保存,添加和删除        }
extjs学习札记(六) grid中数据的保存,添加和删除{
 63extjs学习札记(六) grid中数据的保存,添加和删除            header: 'Available',
 64extjs学习札记(六) grid中数据的保存,添加和删除            dataIndex: 'availDate',
 65extjs学习札记(六) grid中数据的保存,添加和删除            width: 95,
 66extjs学习札记(六) grid中数据的保存,添加和删除            renderer: formatDate,
 67extjs学习札记(六) grid中数据的保存,添加和删除extjs学习札记(六) grid中数据的保存,添加和删除            editor: new fm.DateField(extjs学习札记(六) grid中数据的保存,添加和删除{
 68extjs学习札记(六) grid中数据的保存,添加和删除                format: 'Y年m月d日',
 69extjs学习札记(六) grid中数据的保存,添加和删除                minValue: '01/01/06',
 70extjs学习札记(六) grid中数据的保存,添加和删除                disabledDays: [06],
 71extjs学习札记(六) grid中数据的保存,添加和删除                disabledDaysText: 'Plants are not available on the weekends'
 72extjs学习札记(六) grid中数据的保存,添加和删除            }
)
 73extjs学习札记(六) grid中数据的保存,添加和删除        }
,
 74extjs学习札记(六) grid中数据的保存,添加和删除        checkColumn
 75extjs学习札记(六) grid中数据的保存,添加和删除    ],
 76extjs学习札记(六) grid中数据的保存,添加和删除extjs学习札记(六) grid中数据的保存,添加和删除        defaults: extjs学习札记(六) grid中数据的保存,添加和删除{
 77extjs学习札记(六) grid中数据的保存,添加和删除            sortable: true
 78extjs学习札记(六) grid中数据的保存,添加和删除        }

 79extjs学习札记(六) grid中数据的保存,添加和删除    }
);
 80extjs学习札记(六) grid中数据的保存,添加和删除
 81extjs学习札记(六) grid中数据的保存,添加和删除
 82extjs学习札记(六) grid中数据的保存,添加和删除    // 构造一个Store对象
 83extjs学习札记(六) grid中数据的保存,添加和删除extjs学习札记(六) grid中数据的保存,添加和删除    var store = new Ext.data.Store(extjs学习札记(六) grid中数据的保存,添加和删除{
 84extjs学习札记(六) grid中数据的保存,添加和删除
 85extjs学习札记(六) grid中数据的保存,添加和删除        url: 'plants.xml',
 86extjs学习札记(六) grid中数据的保存,添加和删除
 87extjs学习札记(六) grid中数据的保存,添加和删除        reader: new Ext.data.XmlReader(
 88extjs学习札记(六) grid中数据的保存,添加和删除extjs学习札记(六) grid中数据的保存,添加和删除            extjs学习札记(六) grid中数据的保存,添加和删除{
 89extjs学习札记(六) grid中数据的保存,添加和删除                record: 'plant'
 90extjs学习札记(六) grid中数据的保存,添加和删除            }
,
 91extjs学习札记(六) grid中数据的保存,添加和删除
 92extjs学习札记(六) grid中数据的保存,添加和删除            [
 93extjs学习札记(六) grid中数据的保存,添加和删除extjs学习札记(六) grid中数据的保存,添加和删除                extjs学习札记(六) grid中数据的保存,添加和删除{ name: 'common', type: 'string' },
 94extjs学习札记(六) grid中数据的保存,添加和删除extjs学习札记(六) grid中数据的保存,添加和删除                extjs学习札记(六) grid中数据的保存,添加和删除{ name: 'botanical', type: 'string' },
 95extjs学习札记(六) grid中数据的保存,添加和删除extjs学习札记(六) grid中数据的保存,添加和删除                extjs学习札记(六) grid中数据的保存,添加和删除{ name: 'light' },
 96extjs学习札记(六) grid中数据的保存,添加和删除extjs学习札记(六) grid中数据的保存,添加和删除                extjs学习札记(六) grid中数据的保存,添加和删除{ name: 'price', type: 'float' },
 97extjs学习札记(六) grid中数据的保存,添加和删除extjs学习札记(六) grid中数据的保存,添加和删除                extjs学习札记(六) grid中数据的保存,添加和删除{ name: 'availDate', mapping: 'availability', type: 'date', dateFormat: 'm/d/Y' },
 98extjs学习札记(六) grid中数据的保存,添加和删除extjs学习札记(六) grid中数据的保存,添加和删除                extjs学习札记(六) grid中数据的保存,添加和删除{ name: 'indoor', type: 'bool' }
 99extjs学习札记(六) grid中数据的保存,添加和删除            ]
100extjs学习札记(六) grid中数据的保存,添加和删除        ),
101extjs学习札记(六) grid中数据的保存,添加和删除
102extjs学习札记(六) grid中数据的保存,添加和删除extjs学习札记(六) grid中数据的保存,添加和删除        sortInfo: extjs学习札记(六) grid中数据的保存,添加和删除{ field: 'common', direction: 'ASC' }
103extjs学习札记(六) grid中数据的保存,添加和删除    }
);
104extjs学习札记(六) grid中数据的保存,添加和删除
105extjs学习札记(六) grid中数据的保存,添加和删除    // 构造可编辑的grid
106extjs学习札记(六) grid中数据的保存,添加和删除extjs学习札记(六) grid中数据的保存,添加和删除    var grid = new Ext.grid.EditorGridPanel(extjs学习札记(六) grid中数据的保存,添加和删除{
107extjs学习札记(六) grid中数据的保存,添加和删除        store: store,
108extjs学习札记(六) grid中数据的保存,添加和删除        cm: cm,
109extjs学习札记(六) grid中数据的保存,添加和删除        renderTo: 'grid',
110extjs学习札记(六) grid中数据的保存,添加和删除        width: 600,
111extjs学习札记(六) grid中数据的保存,添加和删除        height: 300,
112extjs学习札记(六) grid中数据的保存,添加和删除        autoExpandColumn: 'common',
113extjs学习札记(六) grid中数据的保存,添加和删除        title: 'Edit Plants?',
114extjs学习札记(六) grid中数据的保存,添加和删除        frame: true,
115extjs学习札记(六) grid中数据的保存,添加和删除        plugins: checkColumn,
116extjs学习札记(六) grid中数据的保存,添加和删除        clicksToEdit: 1,
117extjs学习札记(六) grid中数据的保存,添加和删除extjs学习札记(六) grid中数据的保存,添加和删除        listeners: extjs学习札记(六) grid中数据的保存,添加和删除{
118extjs学习札记(六) grid中数据的保存,添加和删除extjs学习札记(六) grid中数据的保存,添加和删除            "afterEdit"extjs学习札记(六) grid中数据的保存,添加和删除{
119extjs学习札记(六) grid中数据的保存,添加和删除                fn: afterEdit,
120extjs学习札记(六) grid中数据的保存,添加和删除                scope: this
121extjs学习札记(六) grid中数据的保存,添加和删除            }

122extjs学习札记(六) grid中数据的保存,添加和删除        }
,
123extjs学习札记(六) grid中数据的保存,添加和删除extjs学习札记(六) grid中数据的保存,添加和删除        tbar: [extjs学习札记(六) grid中数据的保存,添加和删除{
124extjs学习札记(六) grid中数据的保存,添加和删除            text: "保存",
125extjs学习札记(六) grid中数据的保存,添加和删除extjs学习札记(六) grid中数据的保存,添加和删除            handler: function() extjs学习札记(六) grid中数据的保存,添加和删除{
126extjs学习札记(六) grid中数据的保存,添加和删除                var modified = store.modified;
127extjs学习札记(六) grid中数据的保存,添加和删除                updateData(modified);
128extjs学习札记(六) grid中数据的保存,添加和删除            }

129extjs学习札记(六) grid中数据的保存,添加和删除        }
]
130extjs学习札记(六) grid中数据的保存,添加和删除    }
);
131extjs学习札记(六) grid中数据的保存,添加和删除
132extjs学习札记(六) grid中数据的保存,添加和删除    // 触发数据的加载
133extjs学习札记(六) grid中数据的保存,添加和删除    store.load();
134extjs学习札记(六) grid中数据的保存,添加和删除
135extjs学习札记(六) grid中数据的保存,添加和删除    //发送数据到服务器端进行更新
136extjs学习札记(六) grid中数据的保存,添加和删除extjs学习札记(六) grid中数据的保存,添加和删除    function updateData(modified) extjs学习札记(六) grid中数据的保存,添加和删除{
137extjs学习札记(六) grid中数据的保存,添加和删除        var json = [];
138extjs学习札记(六) grid中数据的保存,添加和删除extjs学习札记(六) grid中数据的保存,添加和删除        Ext.each(modified, function(item) extjs学习札记(六) grid中数据的保存,添加和删除{
139extjs学习札记(六) grid中数据的保存,添加和删除            json.push(item.data);
140extjs学习札记(六) grid中数据的保存,添加和删除        }
);
141extjs学习札记(六) grid中数据的保存,添加和删除extjs学习札记(六) grid中数据的保存,添加和删除        if (json.length > 0extjs学习札记(六) grid中数据的保存,添加和删除{
142extjs学习札记(六) grid中数据的保存,添加和删除extjs学习札记(六) grid中数据的保存,添加和删除            Ext.Ajax.request(extjs学习札记(六) grid中数据的保存,添加和删除{
143extjs学习札记(六) grid中数据的保存,添加和删除                url: "EditGrid.aspx",
144extjs学习札记(六) grid中数据的保存,添加和删除extjs学习札记(六) grid中数据的保存,添加和删除                params: extjs学习札记(六) grid中数据的保存,添加和删除{ data: Ext.util.JSON.encode(json) },
145extjs学习札记(六) grid中数据的保存,添加和删除                method: "POST",
146extjs学习札记(六) grid中数据的保存,添加和删除extjs学习札记(六) grid中数据的保存,添加和删除                success: function(response) extjs学习札记(六) grid中数据的保存,添加和删除{
147extjs学习札记(六) grid中数据的保存,添加和删除extjs学习札记(六) grid中数据的保存,添加和删除                    Ext.Msg.alert("信息""数据更新成功!"function() extjs学习札记(六) grid中数据的保存,添加和删除{ store.reload(); });
148extjs学习札记(六) grid中数据的保存,添加和删除                }
,