easyui datagrid 表格内改变数据,改变其他单元格数据 (3)

8 篇文章 0 订阅

easyui datagrid 获取数据后,编辑,其实就相当于表格的修改界面

说下遇到的问题

1)表格中有几个combobox ,当其中一个combobox变化的时候,触发另外一个combobox变化

2)combobox的值只能初始化的时候,加载进来,因此当其中一个combobox变化的时候,触发另外一个combobox变化,第二个combobox的初始值,有问题,只能全部加载进来

3)当编辑的时候遇到第一个combobox的值不显示了,就是不编辑有数据,一旦编辑触发没有数据,很是郁闷,就是editorJbfl.target.combobox这个造成的,没办法通过

var comboboxJbfl = $('#demowells').datagrid('getEditor', {index:rowIndex,field:'jbdm'});

 $(comboboxJbfl.target).combobox('setValue',rowData.jbdm);设置了值,

不知道为什么要使用$(comboboxJbfl.target),原因是通过console.log()是能看到下一步是target

4)这两个问题弄了一个下午


onBeginEdit : function(rowIndex, rowData){
            var rowdata = $("#demowells").datagrid("getEditors",rowIndex);
            var comboboxJbfl = $('#demowells').datagrid('getEditor', {index:rowIndex,field:'jbdm'});
            
            var editorJbfl = rowdata[2];
            var editorOther = rowdata[3];
            var editorwell = rowdata[4];
            editorJbfl.target.combobox({
                onSelect:function(obj){
                    editorOther.target.textbox('setValue',obj.jbdm);
//                    editorwell.target.combobox('reload',"/wzdemo/findWellByJb/"+obj.jbdm);//use POST ,not use,这个是datagrid 没有写method:GET
                    getWellsByJb(obj.jbdm);
                    editorwell.target.combobox({
                        valueField:'wellId',
                        textField:'jm',
                        data:wells,
                        required:true
                    });
                }
            });
            $(comboboxJbfl.target).combobox('setValue',rowData.jbdm);

        }


全部代码

var jbfldms =[];
var wells = [];

function getJbfldms(){
    $.ajax({  
        type:"GET",
        url:"/wzdemo/findAllJbfl" ,
        dataType:"json",
        async:false,
        success:function(data){
            jbfldms = data;
        }
    });
}

function getAllWells(){
    $.ajax({  
        type:"GET",
        url:"/wzdemo/findAllWell" ,
        dataType:"json",
        async:false,
        success:function(data){
            wells = data;
        }
    });
}

function getWellsByJb(jbdm){
    $.ajax({  
        type:"GET",
        url:"/wzdemo/findWellByJb/"+jbdm ,
        dataType:"json",
        async:false,
        success:function(data){
            wells = data;
        }
    });
}
        
$(function(){
    getAllWells();
    getJbfldms();
      $("#demowells").datagrid({
          method:"GET",
          url:"/wzdemo/demodatalist",
        iconCls:'icon-edit',
        width:660,
        height:250,
        singleSelect:true,
        idField:'demoId',
        columns:[[    
            {field:'demoId',title:'demoId',width:100,editor:'text'},
            {field:'demoName',title:'demoName',width:100,editor:'text'},    
            {field:'jbdm',title:'demoJbName',width:100,
                formatter:function(value){
                    for(var i=0; i<jbfldms.length; i++){
                        if (jbfldms[i].jbdm == value){
                            return jbfldms[i].jb;
                        }else{
                            
                        }
                    }
                        return value;
                },
                editor:{
                    type:'combobox',
                    options:{
                        valueField:'jbdm',
                        textField:'jb',
                        data:jbfldms,
                        required:true
                    }
                }
            },    
            {field:'demoOther',title:'demoOther',width:100,align:'right',editor:'textbox'},
            {field:'wellId',title:'wellName',width:100,
                formatter:function(value){
                    for(var i=0; i<wells.length; i++){
                        if (wells[i].wellId == value) return wells[i].jm;
                        }
                        return value;
                },
                editor:{
                    type:'combobox',
                    options:{
                        type:'GET',
                        valueField:'wellId',
                        textField:'jm',
                        data:wells,
                        required:true
                    }
                }
            },
            {field:'action',title:'Action',width:80,align:'center',
                formatter:function(value,row,index){
//                    console.log(row);
//                    console.log(index);
                    if (row.editing){
                        var s = '<a href="#" οnclick="saverow(this)">Save</a> ';
                        var c = '<a href="#" οnclick="cancelrow(this)">Cancel</a>';
                        return s+c;
                    } else {
                        var e = '<a href="#" οnclick="editrow(this)">Edit</a> ';
                        var d = '<a href="#" οnclick="deleterow(this)">Delete</a>';
                        return e+d;
                    }
                }
            }   
        ]],
        loadFilter: function(data) {
            console.log(data);
            var rows = [];
            if(data.rows!=null){
                for(var i = 0; i < data.rows.length; i++) {
                    var demo = {};
                    demo.demoId=data.rows[i].demoId;
                    demo.demoName=data.rows[i].demoName;
                    demo.jbdm=data.rows[i].demoJb;
                    demo.demoOther=data.rows[i].demoOther;
                    demo.wellId=data.rows[i].demoWellid;
                    rows.push(demo);
                }
                    return {total: data.total, rows: rows};
            }else{
                return {total: 0, rows: rows};
            }
        },
        pagination:true,
        onBeforeEdit:function(index,row){
            row.editing = true;
            updateActions(index);
        },
        onAfterEdit:function(index,row){
            row.editing = false;
            updateActions(index);
        },
        onCancelEdit:function(index,row){
            row.editing = false;
            updateActions(index);
        },
        onClickRow:function(rowIndex, rowData){
        },
        onClickCell:function(rowIndex, field, value){
        },
        onBeginEdit : function(rowIndex, rowData){
            var rowdata = $("#demowells").datagrid("getEditors",rowIndex);
            var comboboxJbfl = $('#demowells').datagrid('getEditor', {index:rowIndex,field:'jbdm'});
            
            var editorJbfl = rowdata[2];
            var editorOther = rowdata[3];
            var editorwell = rowdata[4];
            editorJbfl.target.combobox({
                onSelect:function(obj){
                    editorOther.target.textbox('setValue',obj.jbdm);
//                    editorwell.target.combobox('reload',"/wzdemo/findWellByJb/"+obj.jbdm);//use POST ,not use
                    getWellsByJb(obj.jbdm);
                    editorwell.target.combobox({
                        valueField:'wellId',
                        textField:'jm',
                        data:wells,
                        required:true
                    });
                }
            });
            $(comboboxJbfl.target).combobox('setValue',rowData.jbdm);
        }
      });
});

var editIndex = -1;
function endEditing(){
    if (editIndex == -1){
        return true;
    }else{
        return false;
    }
    if ($('#demowells').datagrid('validateRow', editIndex)){
        editIndex = -1;
        return true;
    } else {
        return false;
    }
}

function getRowIndex(target){
    var tr = $(target).closest('tr.datagrid-row');
    return parseInt(tr.attr('datagrid-row-index'));
}
        
function editrow(target){
    if(endEditing()){
        $('#demowells').datagrid('beginEdit', getRowIndex(target));
//        var rowIndex = getRowIndex(target);
//        var pp = $('#demowells').datagrid('getEditors',rowIndex);
//        console.log(pp);
    }else{
        showMessage("请先对已经存在的编辑行,保存");
    }
}
    
function deleterow(target){
    $.messager.confirm('Confirm','Are you sure?',function(r){
        if (r){
            $('#demowells').datagrid('deleteRow', getRowIndex(target));
            editIndex = -1;

//            $('#demowells').datagrid('deleteSelectedRow');
        }
    });
}

function saverow(target){
    $('#demowells').datagrid('endEdit', getRowIndex(target));
    editIndex = -1;
}

function cancelrow(target){
    $('#demowells').datagrid('cancelEdit', getRowIndex(target));
    editIndex = -1;
}

function updateActions(index){
    $('#demowells').datagrid('updateRow',{
        index: index,
        row:{}
    });
}

function insert(){
    var flag = endEditing();
    if(!endEditing())return;
    var row = $('#demowells').datagrid('getSelected');
    if (row){
        var index = $('#demowells').datagrid('getRowIndex', row);
    } else {
        index = 0;
    }
    $('#demowells').datagrid('insertRow', {
        index: index,
        row:{
//                    status:'P'
            }
        });
    $('#demowells').datagrid('selectRow',index);
    $('#demowells').datagrid('beginEdit',index);
    editIndex = index;
}


function saveall(){
    if(editIndex!=-1){
        alert("请对每一行进行保存");
        return;
    }
    var rows = $("#demowells").datagrid("getRows");
    var datas = [];
    for(var i=0;i<rows.length;i++){
        var data = {};
//        data.demoId = rows[i].demoId;
        data.demoName = rows[i].demoName;
        data.demoJb = rows[i].demoJbid;
        data.demoOther = rows[i].demoOther;
        data.demoWellid = rows[i].wellId;
        datas.push(data);
    }
    parent.$.messager.progress({
                    title : '提示',
                    text : '数据处理中,请稍后....'
            });
    $.post("/wzdemo/adddemodata/"+JSON.stringify(datas),function(result){
        parent.$.messager.progress('close');
        if(result.result=="success"){
            showMessage("保存ok");
            $.messager.show({
                    title:'操作提示',
                    msg:'操作成功,两秒钟后窗口自动关闭',
                        showType:'slide',
                        style:{
                            right:'',
                            bottom:''
                        }
                });
                window.setTimeout(function(){
                    window.parent.PIMS.Tool.closeTab("表格新增");
                }, 2000);
        }else{
            showMessage("保存失败");
        }
        
    });

}

转个博客  http://blog.csdn.net/donggua3694857/article/details/51433882,下面是他的内容

最近有个需求就是当你打开datagrid的编辑状态时,要根据行数据的不同对应的combobox的下拉选项也不同。同时为了美观,打开编辑状态的时候combobox为我默认选择数据。我的实现思路是,原有的editor的data不动,重写onBeginEdit方法,在里面获取到要修改的editor,判断rowData的值,当需要修改时再进行操作。废话不多说,具体代码贴上:


onBeginEdit:function(index, rowData){
            //统计方法下拉框
            var smEditor = $('#FoTable').datagrid('getEditor', {
                      index : index,  
                       field : 'statisticMethod'  
            });
            $(smEditor.target).combobox({
                onLoadSuccess: function () {
                     $(smEditor.target).combobox('setValue', rowData.statisticMethod);
                },
                onShowPanel: function(){   //下拉展开时动态修改options
                    //datatype处理统计方法
                    if(rowData.dataType == 'string' || rowData.dataType == 'date'){
                        var data = [];
                        data.push({'key':'','value':'请选择'},
                                {'key':'count','value':'计数'},
                                {'key':'min','value':'最小'},
                                {'key':'max','value':'最大'},
                                {'key':'mode','value':'众数'});
                        $(smEditor.target).combobox("loadData", data);
                    }
                    //设置值                            
                    $(smEditor.target).combobox('setValue', rowData.statisticMethod);                
                }
            });
            //分组排序下拉框
            var goEditor = $('#FoTable').datagrid('getEditor', {
                      index : index,  
                       field : 'groupOrder'  
            });
            $(goEditor.target).combobox({
                onLoadSuccess: function () {
                     $(goEditor.target).combobox('setValue', rowData.groupOrder);
                },
                onShowPanel: function(){   //下拉展开时动态修改options
                    //datatype处理统计方法
                    if(rowData.groupOrder == 0){
                        var data = [];
                        data.push({'key':'0','value':'无'},
                                {'key':'1','value':'升序'},
                                {'key':'-1','value':'降序'});
                        $(goEditor.target).combobox("loadData", data);
                    }
                    //设置值                            
                    $(goEditor.target).combobox('setValue', rowData.groupOrder);                    
                }
            });
        }


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值