刚开始数据加载完是这样的
如图
现在想做的是点击修改,然后打开编辑器,将操作那列的当前数据变成保存和取消
如图
不知道怎么样去修改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> ' +
'<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);
}
});
}
}
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> ' +
'<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
不是自问自答的,是因为发帖了,好久每人回答,想到办法了,就得关闭帖子了,但每人回答分数就白扔了,
#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
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帮我看看这个
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> ' +
'<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);
}
});
}
}
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> ' +
'<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
不是自问自答的,是因为发帖了,好久每人回答,想到办法了,就得关闭帖子了,但每人回答分数就白扔了,
#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
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帮我看看这个
updateRow后你后面是怎样获取getChanges updated的啊。
http://bbs.jeasyuicn.com/thread-3828-1-1.html帮我看看这个