一:可编辑行
先定义需要用到的变量
var datagrid;//定义全局变量datagrid
var editRow = undefined; //定义全局变量:当前编辑的行
在toolbar工具栏里对行进行操作,也就是改变其状态。比如需要修改一行时:
{ text: '修改', iconCls: 'icon-edit', handler: function () {
//修改时要获取选择到的行
var rows = datagrid.datagrid("getSelections");
//如果只选择了一行则可以进行修改,否则不操作
if (rows.length == 1) {
//修改之前先关闭已经开启的编辑行,当调用endEdit该方法时会触发onAfterEdit事件
if (editRow != undefined) {
datagrid.datagrid("endEdit", editRow);
}
//当无编辑行时
if (editRow == undefined) {
//获取到当前选择行的下标
var index = datagrid.datagrid("getRowIndex", rows[0]);
//开启编辑
datagrid.datagrid("beginEdit", index);
//把当前开启编辑的行赋值给全局变量editRow
editRow = index;
//当开启了当前选择行的编辑状态之后,
//应该取消当前列表的所有选择行,要不然双击之后无法再选择其他行进行编辑
datagrid.datagrid("unselectAll");
//alert(setcity);
}
}
}
}, '-',
结束编辑后对行保存,会自动触发onAfterEdit事件,利用function中rowIndex,和rowData,参数,结合Ajax,可以和后台交互数据
二:可编辑行中的级联下拉框
省市级联中,先定义省市的数组,格式如:var citys=[{province:"重庆",city:["重庆"]}, {province:"海南",city:["儋州","海口","三亚"]},],
在列中就能直接加载省份,onSelect事件将省份对应的城市输出为jsong格式:[{"city":"儋州","selected":"true"},{"city":"海口"},{"city":"三亚"}]
然后获取城市的级联框将值加载进去:
{ field: 'province',
title: '省份',
width: 100,
editor:{
type:'combobox',
options:{
valueField:'province',
textField:'province',
data:citys,
required:true,
editable:false,
onSelect: function(rec){
var setcity=[];
var seprovince=rec["province"];
var js;
var data;
for(var i=0;i<citys.length;i++){
if(citys[i].province==seprovince){
for(var j=0;j<citys[i].city.length;j++){
if(citys[i].city.length-1==0){
js=JSON.stringify(citys[i].city[j]);
setcity.push("[{\"city\":"+js+",\"selected\":\"true\"}]");
}else if(j==0){
js=JSON.stringify(citys[i].city[j]);
setcity.push("[{\"city\":"+js+",\"selected\":\"true\"}");
}else if(j==citys[i].city.length-1){
js=JSON.stringify(citys[i].city[j]);
setcity.push("{\"city\":"+js+"}]");
}else{
js=JSON.stringify(citys[i].city[j]);
setcity.push("{\"city\":"+js+"}");
}
}
}
}
data = $.parseJSON(setcity);
var ed =datagrid.datagrid( 'getEditor',{index:editRow,field: 'city' });
$(ed.target).combobox('loadData',data);
},
}
}
},
{ field: 'city',
title: '城市',
width: 100,
editor:{
type:'combobox',
options:{
valueField:'city',
textField:'city',
required:true,
editable:false,
panelHeight:'200px'
}
}
},
效果如图:
但是第一次下拉省的时候无法加载出城市