easy ui可编辑列和级联下拉

本文详细介绍了如何在数据网格(datagrid)中实现可编辑行功能,包括修改行状态和结束编辑后保存数据,并通过级联下拉框实现省市联动选择。同时,解释了在编辑状态下如何正确地处理级联下拉框的加载和数据更新,确保用户体验流畅。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一:可编辑行
先定义需要用到的变量
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'
}
}
                  },
效果如图:


但是第一次下拉省的时候无法加载出城市

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值