3.6K Star 11K Fork 4.4K

卓源软件 / JeeSite 4.2

主子表,子表提交数据缺失问题

Backlog
振远  Opened this issue

该问题是怎么引起的?

版本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>&nbsp;');
				}
				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>&nbsp;');
				} 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>&nbsp;');
					}
				}
				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条记录
输入图片说明

报错信息

6732 thinkgem 1578914432 total 2 participants

Comments (1)

6732 thinkgem 1578914432
卓源软件 2021-02-24 13:31 owner

不开启editGridInitAllRowEdit的话,原数据来的6条数据就不会生成输入框。你通过 f12 看提交后台的参数是什么,应该没有这6条数据。你从后台查看到的6条数据是 Controller 里 get 方法合并的数据。第7条数据没有,请 f12 确认提交的内容,发上来。

Sign in to comment

Assignees
Labels
Not set
Projects
Milestones
Branches
Planed to start
Not set
Planed to end
Not set
Top level
Priority
Java
1
https://gitee.com/thinkgem/jeesite4.git
git@gitee.com:thinkgem/jeesite4.git
thinkgem
jeesite4
JeeSite 4.2

Search