easyui datagrid 如何动态改变某列的数据

时间:2021-01-29 16:17:24
就是想做的这样的效果
刚开始数据加载完是这样的
如图
easyui datagrid 如何动态改变某列的数据

现在想做的是点击修改,然后打开编辑器,将操作那列的当前数据变成保存和取消
如图
easyui datagrid 如何动态改变某列的数据

不知道怎么样去修改datagrid中的那个操作中的数据

7 个解决方案

#1


定义一个变量存放正在编辑的行,通过updateRow这个方法从新执行formatter这个方法通过这个变量判断选择哪个就可以



field: 'operate',
            title: '操作',
            //title: $res_entry('SCB.label.status'),
            width: 100,
            formatter: function(value, rowData, rowIndex){
                var operate = '<a href="javascript:void(0)"  onclick="modify(' + rowIndex + ')">修改</a>'
                if (editorRow != -1 && editorRow == rowIndex) {
                    operate = '<a href="javascript:void(0)" onclick="saveEdit(' + rowIndex + ')">保存</a>&nbsp' +
                    '<a href="javascript:void(0)" onclick="cancelEdit(' +
                    rowIndex +
                    ')">取消</a>';
                }
                return operate;
                
            }

/**
 * 修改
 */
function modify(index){
    //判断是否只有一行在修改
    var num = POSStockRowTable.datagrid('getSelections');
    if (editorRow == -1) {
        //当没有数据编辑时则进行编辑
        //打开编辑器进行编辑
        POSStockRowTable.datagrid('beginEdit', index);
        //将当前编辑的行号给记录在编辑的行变量中
        editorRow = index;
        //更新当前编辑行的内容,用于改变操作的数据 operate 列值
        POSStockRowTable.datagrid('updateRow', {
            index: index,
            row: {
                operate: ""
            },
        });
        
    }
    else {
        //当有数据编辑时提示是否保存
        $.messager.confirm('提示', '是否保存正在修改的数据', function(btn2){
            //点击确定则保存,否则取消
            if (btn2) {
                //存放正在编辑的行号
    var index = editorRow;
    editorRow = -1;
    POSStockRowTable.datagrid('endEdit', index);
            }
        });
    }
    
}

#2


还有一个可以在formatter 中将三个按钮全写出来,通过onBeforeEdit隐藏和显示按钮就可以

#3


楼主的马甲自问自答?小心挨关黑屋~~

#4


可爱的lz。

#5


不是自问自答的,是因为发帖了,好久每人回答,想到办法了,就得关闭帖子了,但每人回答分数就白扔了, easyui datagrid 如何动态改变某列的数据

#6


楼主,请教一下,用updaterow更新了数据后用getchanges可以获取到更新行吗?我试了好像不行
function updateRow(){
$('#dg').datagrid('updateRow',{index:2,row:{attr1:'test'}});
}

function getChanges(){
var rows = $('#dg').datagrid('getChanges');
alert(rows.length+' rows are changed!');
}
得到是0

#7


楼主
updateRow后你后面是怎样获取getChanges updated的啊。
http://bbs.jeasyuicn.com/thread-3828-1-1.html帮我看看这个

#1


定义一个变量存放正在编辑的行,通过updateRow这个方法从新执行formatter这个方法通过这个变量判断选择哪个就可以



field: 'operate',
            title: '操作',
            //title: $res_entry('SCB.label.status'),
            width: 100,
            formatter: function(value, rowData, rowIndex){
                var operate = '<a href="javascript:void(0)"  onclick="modify(' + rowIndex + ')">修改</a>'
                if (editorRow != -1 && editorRow == rowIndex) {
                    operate = '<a href="javascript:void(0)" onclick="saveEdit(' + rowIndex + ')">保存</a>&nbsp' +
                    '<a href="javascript:void(0)" onclick="cancelEdit(' +
                    rowIndex +
                    ')">取消</a>';
                }
                return operate;
                
            }

/**
 * 修改
 */
function modify(index){
    //判断是否只有一行在修改
    var num = POSStockRowTable.datagrid('getSelections');
    if (editorRow == -1) {
        //当没有数据编辑时则进行编辑
        //打开编辑器进行编辑
        POSStockRowTable.datagrid('beginEdit', index);
        //将当前编辑的行号给记录在编辑的行变量中
        editorRow = index;
        //更新当前编辑行的内容,用于改变操作的数据 operate 列值
        POSStockRowTable.datagrid('updateRow', {
            index: index,
            row: {
                operate: ""
            },
        });
        
    }
    else {
        //当有数据编辑时提示是否保存
        $.messager.confirm('提示', '是否保存正在修改的数据', function(btn2){
            //点击确定则保存,否则取消
            if (btn2) {
                //存放正在编辑的行号
    var index = editorRow;
    editorRow = -1;
    POSStockRowTable.datagrid('endEdit', index);
            }
        });
    }
    
}

#2


还有一个可以在formatter 中将三个按钮全写出来,通过onBeforeEdit隐藏和显示按钮就可以

#3


楼主的马甲自问自答?小心挨关黑屋~~

#4


可爱的lz。

#5


不是自问自答的,是因为发帖了,好久每人回答,想到办法了,就得关闭帖子了,但每人回答分数就白扔了, easyui datagrid 如何动态改变某列的数据

#6


楼主,请教一下,用updaterow更新了数据后用getchanges可以获取到更新行吗?我试了好像不行
function updateRow(){
$('#dg').datagrid('updateRow',{index:2,row:{attr1:'test'}});
}

function getChanges(){
var rows = $('#dg').datagrid('getChanges');
alert(rows.length+' rows are changed!');
}
得到是0

#7


楼主
updateRow后你后面是怎样获取getChanges updated的啊。
http://bbs.jeasyuicn.com/thread-3828-1-1.html帮我看看这个