1、问题的引出:
这其实源于一个小小的需求,客户要求 在当前EXT分页且按照baselineType字段排序的基础上,选中某行点击“编辑”,弹出编辑窗口,编辑完成之后要求编辑行仍呈选中状态。
我的思路是:编辑完成之后,后台直接更新DB,但是前台不进行数据的重新加载,仅仅更新当前编辑记录的字段显示值。
那么,我需要做的是
(1)确定当前记录的行数dataIndex,可参考之前日志《Ext grid如何获取选中行的行号》。
(2)获取jsp表单中radio类型的baselineType的值baselineTypeVal,可参考之前日志《js中获取jsp表单中radio类型的值 》。
(3)修改当前记录的baselineType的显示值,代码如下:
grid.store.getAt(dataIndex).set("baselineType", baselineTypeVal);
2、重点关注之grid中部分字段的更新
grid.store.getAt(dataIndex).set("baselineType", baselineTypeVal); //1、(3)
对于以上代码,关注以下几点:
(1)set()的第一个参数值baselineType,对应grid定义中的dataIndex
{
header : '基线类型',
width : 10,
align : 'center',
dataIndex : 'baselineType',
renderer : function(value, p, record) {
if(value == 1) {
showValue = "非基线";
} else if(value == 2) {
showValue = "功能基线";
} else if ( value == 3) {
showValue = "分配基线";
} else {
showValue = "";
}
return "<lable class="labClass" myTitle='" + value + "'>" + showValue + "</lable>";
}
}
(2) set()的第一个参数值baselineTypeVal的取值应该必须是 1、2、3或者”“之一,之后会依据grid中header为”基线类型“的定义来显示。意即:
grid.store.getAt(dataIndex).set("baselineType", 1); (正确)
grid.store.getAt(dataIndex).set("baselineType", ”1“); (正确)
grid.store.getAt(dataIndex).set("baselineType", ”非基线“); (错误)