代码拉取完成,页面将自动刷新
版本4.0.8,代码生成主子表,子表设置初始不可编辑,新增记录提交时发现总有一条记录丢失不提交,设置editGridInitAllRowEdit为true时,数据不丢失,应该是bug。
1、子表前端界面
<script>
$("#AssignDataGrid").dataGrid({
data: ${toJson(ZktimeAttsum.AttenceAssignList)},
datatype: "local", // 设置本地数据
autoGridHeight: function () {
return 'auto'
}, // 设置自动高度
// 设置数据表格列
columnModel: [
{header: '状态', name: 'status', editable: true, hidden: true},
{header: '主键', name: 'id', editable: true, hidden: true},
{header: '${text('考勤记录')}', name: 'zkid.id', editable: true, hidden: true},
{
header: '${text('项目/系统')}', name: 'ProjectSystem', width: 150,
formatter: function (val, obj, row, act) {
return js.val(row, 'ProjectSystem.id') + '|' + js.val(row, 'ProjectInfo.projectName')+'/'+js.val(row, 'SystemInfo.sysName');
}, editable: true, edittype: "custom", editoptions: {
custom_element: function (val, editOptions) {
return js.template('treeselectTpl', {
id: 'sys_' + editOptions.id, title: '项目/系统',
name: 'ProjectSystem.id', value: val.split('|')[0],
labelName: 'SystemInfo.sysName', labelValue: val.split('|')[1],
url: '${ctx}//project/ProjectInfo/proSysList', cssClass: ''
});
}
}
},
{
header: '${text('工时')}', name: 'offhour', width: 40,
edittype: 'text',
editable: true,
editoptions: {'class': 'form-control number required'}
},
{header:'${text('更新人')}', name:'updateBy', hidden: true},
{header:'${text('更新人')}', name:'updateByName', index:'a.user_name', width:50, align:"center"},
{
header:'${text('操作')}',
name:'actions',
width:80,
sortable:false,
fixed:true,
formatter:function (val, obj, row, act) {
//记录只允许修改一次
var actions = [];
if(row.updateBy == 'system'){
actions.push('<a href="#" onclick="$(\'#AssignDataGrid\').dataGrid(\'editRow\',\''+obj.rowId+'\',{keys:true,focusField:true});return false;"><i class="fa fa-pencil"></i></a> ');
}
if (val == 'new') {
actions.push('<a href="#" onclick="js.confirm(\'${text('你确认要删除这条数据吗?')}\', function(){$(\'#AssignDataGrid\').dataGrid(\'delRowData\',\'' + obj.rowId + '\')});return false;"><i class="fa fa-trash-o"></i></a> ');
} else {
if(row.updateBy == 'system'){
actions.push('<a href="#" onclick="js.confirm(\'${text('你确认要删除这条数据吗?')}\', function(){$(\'#AssignDataGrid\').dataGrid(\'setRowData\',\'' + obj.rowId + '\',null,{display:\'none\'})});$(\'#' + obj.rowId + '_status\').val(\'' + Global.STATUS_DELETE + '\');return false;"><i class="fa fa-trash-o"></i></a> ');
}
}
return actions.join('');
},editoptions: {defaultValue: 'new'}}],
// 编辑表格参数
editGrid: true, // 是否是编辑表格
editGridInitRowNum: 1, // 编辑表格的初始化新增行数
editGridInitAllRowEdit: false, //初始不可编辑
editGridAddRowBtn: $('#AssignDataGridAddRowBtn'), // 子表增行按钮
editGridAddRowInitData: {id: '', status: Global.STATUS_NORMAL}, // 新增行的时候初始化的数据
// 编辑表格的提交数据参数
editGridInputFormListName: 'AttenceAssignList', // 提交的数据列表名
editGridInputFormListAttrs:'status,id,zkid.id,ProjectSystem.id,offhour,', // 提交数据列表的属性字段
// 加载成功后执行事件
ajaxSuccess:function (data) {
}
});
</script>
2、子表表格初始化界面如下(新增了一条记录)
3、点击提交后,后台接收到6条记录,应该是7条记录
不开启editGridInitAllRowEdit的话,原数据来的6条数据就不会生成输入框。你通过 f12 看提交后台的参数是什么,应该没有这6条数据。你从后台查看到的6条数据是 Controller 里 get 方法合并的数据。第7条数据没有,请 f12 确认提交的内容,发上来。
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。
确实是get方法合并的数据,提交的时候只提交了有输入框的数据,get方法合并的时候把新纪录从list0开始覆盖,不知道这个能不能调整为从list已有数据尾部追加?业务功能上的需要,目前用的笨方法,又从数据库中全部查出来做的判断
登录 后才可以发表评论