1 今天用easyui datagrid 编辑表格,行编辑操作,遇到一个问题,行编辑器自带的日期编辑器,在选中修改时,行的数据渲染出错,导致选中的行数据回显不出来。
2 于是,我就到网上拜访各位大拿前辈的解决之道,看到有位大拿之前也遇到了类似的问题,他给出了自己的解决方法;可参考他的文章:关于EasyUI DataGrid行编辑时嵌入时间控件 不知道是不是easyui版本问题,我坚持把他帖子读完(挺长的,还是需要耐心的),并试图尝试用他的方法来解决我的问题。最终还是无果。
最终,我试了一种比较偏的方法解决了问题。
3 方法:easyui datagrid 编辑表格datetimebox在编辑回显数据时,因为后台返回给日期编辑框的值是时间戳,就是当前日期的一串毫秒数;esayui的core代码会有一个pase函数,里面有一行是拿到这个value,做split(" ")操作,因为你给的值是number类型,没有split方法,所以报错。我就尝试如下方法,即在后台返回之前把时间类型的字段值转换成字符串,问题居然得以解决。日期控件上渲染数据时,也不用再通过Date的format函数转换成我们看得懂的日期了,因为后台返回的就是日期字符串。
问题得以解决,但是时间也花费了大半天。。。。。。干程序的真NM伤不起呀!!。。
代码如下,希望能给遇到同样问题的童鞋一些帮助,我也就知足了^**^
4
5 easyui 编辑表格怎么用?官方文档上有的;下面附上小编的编辑修改逻辑
//---------add shop sale----------
var editIndex = undefined;
function endEditing(){
if (editIndex == undefined){return true}
if ($('#customList').datagrid('validateRow', editIndex)){
var ed = $('#customList').datagrid('getEditor', {index:editIndex,field:'stylenumCode'});
var stylenumName = $(ed.target).combobox('getText');
$('#customList').datagrid('getRows')[editIndex]['stylenumName'] = stylenumName;
$('#customList').datagrid('endEdit', editIndex);
editIndex = undefined;
return true;
} else {
return false;
}
}
function onClickRow(index){
if (editIndex != index){
if (endEditing()){
$('#customList').datagrid('selectRow', index).datagrid('beginEdit', index);
editIndex = index;
} else {
$('#customList').datagrid('selectRow', editIndex);
}
}
}
function append(){
if (endEditing()){
$('#customList').datagrid('appendRow',{states:'P',date:'new Date()'});
editIndex = $('#customList').datagrid('getRows').length-1;
$('#customList').datagrid('selectRow', editIndex)
.datagrid('beginEdit', editIndex);
}
}
function removeit(){
if (editIndex == undefined){return}
$('#customList').datagrid('cancelEdit', editIndex)
.datagrid('deleteRow', editIndex);
editIndex = undefined;
}
function custom_add(){
if (endEditing()){
$('#customList').datagrid('acceptChanges');
//接下来执行:onAfterEdit
}
}
function onAfterEdit(rowIndex, rowData, changes){
/* if(rowData['id']){//修改
if(changes && 'undefined' != changes){
}
}else{ *///新增
if(rowData['ma100'] != '' || rowData['ma110'] != '' || rowData['ma120'] != '' || rowData['ma130'] != ''
|| rowData['ma140'] != '' || rowData['ma150'] != ''){
rowData['totalPiece'] = Number(rowData['ma100']) + Number(rowData['ma110']) + Number(rowData['ma120']) + Number(rowData['ma130']) + Number(rowData['ma140']) + Number(rowData['ma150']);
if(rowData['ltNumPrice'] != ''){
rowData['totalMoney'] = rowData['totalPiece']*rowData['ltNumPrice'];
}
//设置修改后的总件数和总金额
/* $('#customList').datagrid('beginEdit', rowIndex);
var ed = $('#customList').datagrid('getEditor', {index:rowIndex,field:'totalPiece'});
$(ed.target).numberbox('setValue',rowData['totalPiece']);
ed = $('#customList').datagrid('getEditor', {index:rowIndex,field:'totalMoney'}).target;
$(ed).numberbox('setValue',rowData['totalMoney']);
$('#customList').datagrid('endEdit', rowIndex); */
}
if(rowData['ma160'] != '' || rowData['ma170'] != '' || rowData['ma180'] != '' || rowData['ma190'] != ''){
var gtNums = Number(rowData['ma160']) + Number(rowData['ma170']) + Number(rowData['ma180']) + Number(rowData['ma190']);
rowData['totalPiece'] += gtNums;
if(rowData['gtNumPrice'] != ''){
rowData['totalMoney'] += gtNums*rowData['gtNumPrice'];
}
}
console.log('totalPiece='+rowData['totalPiece']);
console.log('totalMoney='+rowData['totalMoney']);
rowData['afterSubsidyMoney'] = Number(rowData['afterSubsidyMoney']);
$.post("custom/insertorupdate",rowData, function(data){
if(data.status == 200){
$.messager.alert('提示','更新门店销售成功!');
$("#customList").datagrid("reload");
}else{
$.messager.alert('提示',data.msg);
}
editIndex = undefined;
});
//}
}
只是初步研究,还望感兴趣的童鞋一起交流学习!!!~~