ИСПОЛЬЗУЮ EXT 3
Задаю ридер:
var leftReader = new Ext.data.JsonReader({
root: 'dan',
totalProperty: 'total'
}, [
{name: 'x80402'},
{name: 'x375'},
{name: 'p70402'},
{name: 'ch23'}
]
);
Задаю сторе:
var wr=new Ext.data.JsonWriter
({
encode: true,
writeAllFields: true
});
var lStore = new Ext.data.Store({
autoDestroy: true,
autoSave: false,
successProperty: true,
proxy: new Ext.data.HttpProxy({url: 'phps/mm160c07_t.php'}),
baseParams: {c155: c155, priznak: 'left'},
reader: leftReader,
writer: wr,
sortInfo:{field: 'x80402', direction: "ASC"},
autoLoad: true,
batchSave: true // ДЛЯ ЧЕГО ЭТА КОМАНДА????
});
Задаю чекбоксы:
var checkboxLeft = new Ext.grid.CheckboxSelectionModel({
singleSelect: false
});
Далее модель колонок, многие из которых можно редактировать:
var leftCm = new Ext.grid.ColumnModel({
defaults: {
sortable: true, menuDisabled: false,
align: 'center'
},
columns: [
checkboxLeft,
{header: "№ п/п ", dataIndex: 'x80402', sortable: true, width: 45},
{header: "Должность", dataIndex: 'ch23', sortable: true, width: 200},
{header: "Фамилия И.О.", dataIndex: 'p70402', sortable: true, width: 200,
editor: new fm.ComboBox({
name: 'c07p70402',
fieldLabel: 'ФИО',
store: mainStorec07,
displayField: 'p70402',
typeAhead: false,
loadingText: 'Поиск...',
emptyText: 'Введите ФИО',
minChars: 3,
anchor: '95%',
pageSize: 5,
triggerAction: 'all',
hideTrigger: true,
tpl: movieTpl,
itemSelector: 'div.movie-item',
onSelect: function(record){
this.setValue(record.data.getFio);
var zam=Ext.getCmp('id_leftgrid').selModel.getSelections()
var myst = Ext.getCmp('id_leftgrid').getStore();
var zzz=myst.getCount();
for (var zil=0; zil<zzz; zil++){
zInd=myst.find('ch23',myst.data.items[zil].data.ch23,0,false,false);
row = myst.getAt(zInd).data;
row.ch23=record.data.x745;
}
this.collapse();
}
})
},
{header: "Дата подписи", dataIndex: 'x375', sortable: true, width: 100,
renderer: getDateFont,
editor: new fm.DateField({
allowBlank: true, type: 'date',format: 'd.m.Y'
})
}
]
});
Непосредственно сам грид:
var leftGrid = new Ext.grid.EditorGridPanel({
id: 'id_leftgrid',
store: lStore,
enableHdMenu: false,
height: 190,
autoWidth: true,
cm: leftCm,
sm: checkboxLeft,
clicksToEdit: '1'
});
И привожу код кнопки, по клику на которую сохраняю:
id: 'c07Save',
xtype: 'tbbutton',
text: '<b>Cохранить</b>',
handler: function(sm){
leftGrid.store.save({
listeners: { beforesave: {fn: function(){
alert(9999);
var success=Ext.util.JSON.decode(resp.responseText).success;
var message=Ext.util.JSON.decode(resp.responseText).message;
if (success){
Ext.Msg.alert('С О О Б Щ Е Н И Е ',message);
}else Ext.Msg.alert('О Ш И Б К А',message);
}
}}
});
}
С сервера приходит ответ - success и message - я их сам формирую. Вопрос в том - как мне ответ поймать?? listeners не работает! Как же получить ответ с сервера об удачном сохранении?
И второй вопрос - как передать для сохранения строки ТОЛЬКО отмеченные чекбоксами? При этом используя leftGrid.store.save() ????