Ext.ux.grid.RowEditor 遇到修改的记录有时生效 有时失效,求帮助

日同信息 2015-01-07 11:02:54
引用的js文件 Ext.ux.grid.RowEditor

页面js源码:

Ext.namespace("ssi.rule");
ssi.rule.RuleCondMgrControl = function(config) {
Ext.apply(this, config);
this.initialize();
};

ssi.rule.RuleCondMgrControl.prototype = {
initialize : function() {
var win = new Ext.Viewport({
layout : 'border',
items : [this.getGrid()],
renderTo : Ext.getBody()
});
win.show();
win.doLayout(true, true);
},

cancel : function(editor, forced) {
var r = this.grid.getSelectionModel().getSelected();
if (r.data.condId == null){
this.grid.getStore().remove(r);
}
this.grid.getView().refresh();
},

save : function(editor, value, record, rowIdx) {
this.showMask();
var url = this.rootPath + "/rule/cond_insertOrUpdate.do";
var ds = util.GetMsgDs(url);
// 回叫函数
ds.on("load", function(ds) {
this.hideMask();
var rs = ds.getAt(0);
if (rs.data.status != "OK") {// 如果加载数据失败则给出错误提示
alert("错误:" + rs.data.msg);
return;
}
this.grid.getStore().load();
}, this);
ds.load({params:record.data});
},

getGrid : function(){
if (this.grid == null){
var store = new Ext.data.Store({
proxy : new Ext.data.HttpProxy({
url :this.rootPath + "/rule/cond_getRuleCondGridData.do?ruleId="+this.ruleId
}),
reader : new Ext.data.JsonReader({
root : "rows",
totalProperty : "totalCount"
}, [
{ name : "condId" },
{ name : "ruleId" },
{ name : "ruleObjId" },
{ name : "operator" },
{ name : "seq" },
{ name : "param" }
])
});

store.on("load", function(ds){
if (store.getCount() >= 0) {
this.grid.getSelectionModel().selectFirstRow();
}
}, this);

this.editor = new Ext.ux.grid.RowEditor({
saveText : '确认',
cancelText : '取消',
listeners : {
canceledit : this.cancel,
afteredit : this.save,
beforeedit:function() {
Ext.getCmp('operatorCB').getStore().removeAll();
var r = this.grid.getSelectionModel().getSelected();
if(r){
var index = Ext.getCmp('objCB').getStore().find('rule_obj_id', r.data.ruleObjId);
var record = Ext.getCmp('objCB').getStore().getAt(index);
if(record!=null){
this.loadOperatorStore(record.data.operator);
}
}
},
scope : this
}
});

var sm = new Ext.grid.RowSelectionModel({singleSelect:true});
var cm = this.getColumnModel();
this.grid = new Ext.grid.EditorGridPanel({
region : 'center',
store:store ,
trackMouseOver: true,
disableSelection: false,
clicksToEdit: 2,
loadMask: true,
cm: cm,
sm: sm,
plugins: [this.editor],
viewConfig : {
forceFit : true //让grid的列自动填满grid的整个宽度,不用一列一列的设定宽度。
},
tbar : this.createToolbar(),
listeners : {
afterrender : function() {
this.grid.store.load();
},
scope:this
}
});
}
return this.grid;
},

loadOperatorStore : function(strData) {
var str = strData.split(',');
var datas = new Array();
for(var i=0; i<str.length; i++) {
datas[i]=new Array();
for(var j=0;j<2;j++){
datas[i][j]=str[i];
}
}
Ext.getCmp('operatorCB').getStore().loadData(datas);
},

getColumnModel : function() {
var objStore = new Ext.data.JsonStore({
fields : ['rule_obj_id','name', 'operator'],
data : this.ruleObjStore
});

var operatorStore = new Ext.data.ArrayStore({
fields : ['name','value']
});

return new Ext.grid.ColumnModel([new Ext.grid.RowNumberer(), {
header : '条件编号',
dataIndex : 'condId',
hidden : true
},{
header : '规则编号',
dataIndex : 'ruleId',
hidden : true
}, {
header : '规则对象',
dataIndex : 'ruleObjId',
sortable: true,
editor : this.objCombo = new Ext.form.ComboBox({
typeAhead: true,
triggerAction: 'all',
id : 'objCB',
lazyRender:true,
editable : false,
forceSelection : true,
store: objStore,
mode : 'local',
valueField: 'rule_obj_id',
displayField: 'name',
listeners : {
select : function (combo,r,idx){
operatorStore.removeAll();
this.loadOperatorStore(r.data.operator);
},
scope : this
}
}),
renderer : function(value, p, r) {
var index = objStore.find(Ext.getCmp('objCB').valueField, value);
var record = objStore.getAt(index);
var displayText = "";
if (record == null) {
displayText = value;
} else {
displayText = record.data.name;
}
return displayText;
}
}, {
header : '操作符',
dataIndex : 'operator',
sortable: true,
editor : new Ext.form.ComboBox({
typeAhead: true,
triggerAction: 'all',
id : 'operatorCB',
lazyRender:true,
editable : false,
forceSelection : true,
store: operatorStore,
mode : 'local',
valueField: 'name',
displayField: 'name'
})
}, {
header : '参数',
dataIndex : 'param',
sortable: true,
editor: {
xtype: 'textfield',
emptyText:'参数不能为空'
}
}, {
header : '排序',
dataIndex : "seq",
sortable: true,
editor: {
xtype: 'numberfield'
}
}]);
},

createToolbar : function() {
return new Ext.Toolbar({
id : 'toolbar',
items : [new ssi.auth.Action({
text : "添加",
auths:this.auths,
authorityId : 'ADJUST_MGR_CFG_RULE_COND_ADD',
scope : this,
icon : this.rootPath + '/resources/images/toolbar/add.gif',
handler: function(){
if(null == this.ruleId){
alert("请选择一条规则");
return;
}
var Plant = this.grid.getStore().recordType;
var number = this.grid.getStore().getCount();
var e = new Plant({
ruleId:this.ruleId,
ruleObjId:'',
operator:'',
param:'',
seq:number+1
});
this.editor.stopEditing();
this.grid.getStore().insert(0,e);
this.grid.getView().refresh();
this.grid.getSelectionModel().selectRow(0);
this.editor.startEditing(0);
}
}), new ssi.auth.Action({
text : "删除",
auths:this.auths,
authorityId : 'ADJUST_MGR_CFG_RULE_COND_DEL',
scope : this,
icon: this.rootPath + '/resources/images/toolbar/delete.gif',
listeners : {
click :this.del,
scope : this
}
}), '->', "<font color=red>例:<b>包含</b>参数如:'A','B'或1,2; <b>like</b>参数如:%A%或A%或%A</font>"
]});
},

del : function() {
var sm = this.grid.getSelectionModel();
var r = sm.getSelected();
if (!r) {
alert('请选择一个记录');
return;
}
if (!confirm("删除后无法恢复,确认删除?")) {
return;
}
this.showMask();
var url = this.rootPath + "/rule/cond_del.do?condId=" + r.data.condId;
var ds = util.GetMsgDs(url);
// 回叫函数
ds.on("load", function(ds) {
this.hideMask();
var rs = ds.getAt(0);
if (rs.data.status != "OK") {// 如果加载数据失败则给出错误提示
alert("错误:" + rs.data.msg);
return;
}
this.grid.getStore().remove(r);
if (sm.hasPrevious()) {
sm.selectPrevious(true);
} else {
sm.selectFirstRow();
}
}, this);
ds.load();
},

showMask : function() {
if (!this.loadMask) {
this.loadMask = new Ext.LoadMask(Ext.getBody(), {
msg : "正在加载数据请稍后..."
});
}
this.loadMask.show();
},

hideMask : function() {
if (this.loadMask) {
this.loadMask.hide();
}
}
};
...全文
82 回复 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复
内容概要:本文介绍了软件定义汽车(SDV)的最佳实践案例,重点围绕基于Vector技术的电子电气(E/E)架构设计与实现。文档展示了高算力计算平台(HPC)、区域控制器(Zone ECU)和车载网络(如CAN、Ethernet)的系统架构布局,并结合AUTOSAR操作系统(Classic/Adaptive)、虚拟化(Hypervisor)和SOA服务设计,构建现代化车载系统。通过vCANdrive平台演示了从开发、测试(SIL/HIL)、到OTA升级的全流程,涵盖传感器、执行器、应用层软件及云端协同的集成方案。同时展示了硬件原型(如树莓派、Triboard)和MICROSAR系列工具链在实际项目中的应用。; 适合人群:从事汽车电子系统开发、车载软件架构设计以及智能网联汽车研发的工程师和技术管理人员,具备一定的嵌入式系统或AUTOSAR基础者更佳。; 使用场景及目标:①理解软件定义汽车的整体架构设计方法;②掌握基于Vector工具链的HPC与区域控制器集成方案;③实现OTA更新、SIL/HIL测试、ETH-CAN通信转换等关键技术验证;④支持智能驾驶(ADAS)与智能座舱(IVI)系统的快速原型开发。; 阅读建议:建议结合Vector相关工具(如PREEvision、CANoe4SW、MICROSAR)进行实践操作,重点关注系统分层设计、通信机制与软件更新流程,同时可参考文档中的硬件连接示意图与信号映射关系进行仿真与实车验证。

87,992

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧