extjs 之Ext.data.Store[Grid]操作 【增刪修改】
1、增加提交:
buttons: [{
text: '儲存',
handler:function(){
if (Docnum_Add_Form.getForm().isValid()) { //判斷提交的資料是否符合正則表示式
Docnum_Add_Form.getForm().submit({
waitTitle: '提示', //標題
waitMsg: '正在儲存資料請稍後...', //提示資訊
url: '../../ashx/car/Tra_Docnum_add.ashx',
method: "POST",
success: function (form, action) {
//成功後
mystore.load();
Docnum_Add_Win.hide();
return;
/* 方法一
mystore.insert(0,[{}]); //插入空記錄
var _rec=mystore.getAt(0);
_rec.set('Docnum', form.findField('Docnum').value);
_rec.commit();
*/
/* 方法二
var _rec = Ext.create('MyData',{Dconum:form.findField('Docnum').value});
_rec.insert(0,_rec);
*/
},
failure: function (form, action) {
var errorObj = Ext.JSON.decode(action.response.responseText);
Ext.Msg.show({
title: '錯誤提示',
msg: errorObj.msg,
buttons: Ext.Msg.OK,
icon: Ext.Msg.ERROR
});
}
})
}
else {
alert('出錯!輸入資料格式出錯 !');
}
}
}, {
text: '取消',
handler: function () { Docnum_Add_Win.hide(); }
}]
2、刪除部分
var btnDeleteAction = Ext.create('Ext.Action', {
id:'BtnDelete',
iconCls: 'deleteicon',
text: '作廢',
disabled: false,
minWidth: 60,
handler: function (widget, event) {
var rec = mygrid.getSelectionModel().getSelection()[0];
var _docnum = rec.get('Docnum');
Ext.Msg.show({
title: "提示", msg: "確認要作廢單號<"+_docnum+">,是嗎?", width: 300, icon: Ext.MessageBox.QUESTION
, buttons: Ext.MessageBox.YESNO,
fn: function(btn) {
if (btn === "yes") {
//首先刪除後臺資訊
Ext.Ajax.request({
url:"/ashx/car/Tra_Docnum_del.ashx",
method:"POST",
params:{Docnum:rec.get('Docnum')},
success:function(response, opts){
var _index = mystore.indexOf(rec);
mystore.removeAt(_index);
// mystore.removeAt(rec.index); 此為原方式,不能用的。
},
failure:function(response, opts){
var _text = response.responseText;
Ext.Msg.alert("提 示",_text);
}
});
}
}
})
}
});
注意點:由於前臺刪除,沒有重新整理,當刪除下一條資料時,還是用mystore.removeAt(rec.index) 方式,就會錯誤刪除了其他記錄,因為mystore沒有重新編索引,所以你取到的還是上次載入時的索引,所以要用查詢記錄,得到當前實際索引再刪除才可,這問題開始沒注意,EXT也有考慮不全的地方,算不算Bug不知道。
3、更改部分
buttons: [{
text: '儲存',
handler:function(){
if (Docnum_Upd_Form.getForm().isValid()) { //判斷提交的資料是否符合正則表示式
Docnum_Upd_Form.getForm().submit({
waitTitle: '提示', //標題
waitMsg: '正在儲存資料請稍後...', //提示資訊
url: '../../ashx/car/Tra_Docnum_Upd.ashx',
method: "POST",
success: function (form, action) {
//成功後
//mystore.load();
//return;
var flag = action.result.success;
if (flag ) {
var rec = mystore.getAt(_rec.index);
rec.set('Docnum', form.findField('Docnum').value);
//rec.set('UseDate', form.findField('UseDate').value); //這種取法為物件,由於不是日期型別所以不能用
rec.set('UseDate', form.findField('UseDate').rawValue); //直接取文字框中的資料,日期型式時直接取文字
rec.set('DeptName', form.findField('DeptName').value);
rec.set('CarType', form.findField('CarType').value);
rec.set('ToWhere', form.findField('ToWhere').value);
rec.set('CreateUser', form.findField('CreateUser').value);
rec.set('CreateDate', form.findField('CreateDate').value);
rec.set('Checked', form.findField('Checked').value);
//rec.set('CheckUser', form.findField('CheckUser').value);
//rec.set('CheckDate', form.findField('CheckDate').value);
rec.set('PlanMan', form.findField('PlanMan').value);
rec.set('PlanTon', form.findField('PlanTon').value);
rec.set('UseRemark', form.findField('UseRemark').value);
rec.set('MantelNo', form.findField('MantelNo').value);
rec.commit(); //去除單元格的
Docnum_Upd_Win.hide();
}
},
failure: function (form, action) {
var errorObj = Ext.JSON.decode(action.response.responseText);
Ext.Msg.show({
title: '錯誤提示',
msg: errorObj.msg,
buttons: Ext.Msg.OK,
icon: Ext.Msg.ERROR
});
}
})
}
else {
alert('出錯!輸入資料格式出錯 !');
}
}
}, {
text: '取消',
handler: function () { Docnum_Upd_Win.hide(); }
}]