easyUI加载的datagrid,editor表示可编辑
{
field : 'SQE_NAME',
title : '主担',
width : 100,
align : 'center',
editor : {
type : 'textbox',
options : {
readonly : false
}
},
}
点击该单元格可编辑:
dataGridObj.onClickCell = editorUtils.onClickCell;
定义的编辑保存js:
// 编辑datagrid的帮助类
var editorUtils = {editIndex:undefined};
editorUtils.onClickCell = function(index, field) {
var rows = $('#engine_ebom_datagrid').datagrid('getRows');
var data = rows[index];
if (editorUtils.editIndex != index){
$('#engine_ebom_datagrid').datagrid('selectRow', index).datagrid('beginEdit', index);
editorUtils.editIndex = index;
}
}
/**
* 启用编辑
*/
function onStartEdit(){
// 获取选中行数据
var rows = $('#engine_ebom_datagrid').datagrid('getSelections');
// 未选择数据
if (rows.length == 0) {
$.messager.alert("提示", "请选择一行数据");
return;
}
for(var i=0;i<rows.length;i++){
var rowIndex = $('#engine_ebom_datagrid').datagrid('getRowIndex',rows[i]);
$('#engine_ebom_datagrid').datagrid('selectRow', rowIndex).datagrid('beginEdit', rowIndex);
}
};
/**
* 保存
*/
editorUtils.accept = function(){
var dtd = $.Deferred();
var rows = $('#engine_ebom_datagrid').datagrid('getRows');
for(var i=0;i<rows.length;i++){
var rowIndex = $('#engine_ebom_datagrid').datagrid('getRowIndex',rows[i]);
$('#engine_ebom_datagrid').datagrid('selectRow', rowIndex).datagrid('endEdit', rowIndex);
}
var data = $('#engine_ebom_datagrid').datagrid('getRows');
$.ajax({
type : "POST",
url : TpmPage.contextPath + '/engineEbom/batchUpdateEngineEbom',
dataType: 'json',
contentType:'application/json',
data : JSON.stringify(data),
success : function(response) {
dtd.resolve();
console.log(response);
},
error : function(response) {
dtd.reject();
console.error(response);
}
});
refreshCurrent();
return dtd.promise();
}
数据传递到后台时,需批量更新到数据库,采用jdbc批量更新
package com.dflzm.tpme.szjh.service.impl;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Service;
import com.dflzm.tpme.szjh.service.IEngineEbomService;
/**
* Description
* @author fanj
* @version 1.0
* 2020年2月17日 下午6:09:28
*/
@Service
public class EngineEbomServiceImpl implements IEngineEbomService {
@Autowired
private JdbcTemplate businessTpmeJdbcTemplate;
@Override
public void batchUpdateEngineEbom(List<Map<String, Object>> params) {
// 用于封装参数
List<Object[]> batchArgs = new ArrayList<Object[]>();
for (int i = 0; i < params.size(); i++) {
Map<String, Object> map = params.get(i);
String sqeAccount = String.valueOf(map.get("SQE_ACCOUNT"));
String sqeName = String.valueOf(map.get("SQE_NAME"));
String partDesignerAccount = String.valueOf(map.get("PART_DESIGNER_ACCOUNT"));
String partDesignerName = String.valueOf(map.get("PART_DESIGNER_NAME"));
String enginePrjCode = String.valueOf(map.get("ENGINE_PRJ_CODE"));
String supplierNo = String.valueOf(map.get("SUPPLIER_NO"));
String supplierName = String.valueOf(map.get("SUPPLIER_NAME"));
String engineEbomId = String.valueOf(map.get("ENGINE_EBOM_ID"));
Object[] batchArg = new Object[] {sqeAccount, sqeName, partDesignerAccount, partDesignerName, enginePrjCode, supplierNo,
supplierName, engineEbomId};
batchArgs.add(batchArg);
}
String sql = "update TT_ENGINE_EBOM set SQE_ACCOUNT = ?," + "SQE_NAME = ?," + "PART_DESIGNER_ACCOUNT = ?," + "PART_DESIGNER_NAME = ?,"
+ "ENGINE_PRJ_CODE = ?," + "SUPPLIER_NO = ?," + "SUPPLIER_NAME = ?" + " where ENGINE_EBOM_ID = ?";
businessTpmeJdbcTemplate.batchUpdate(sql, batchArgs);
}
}
页面编辑、保存按钮:
<div class="easyui-layout" data-options="fit:true,border:false"> <div data-options="region:'center',border:false"> <table id="engine_ebom_datagrid"></table> </div> </div> <!-- 按钮 datagrid-btn-separator--> <div id="engine_ebom_tb"> <table cellspacing="0" cellpadding="0"> <tr> <td style="font-size:12px;color:rgb(14,45,95);font-weight:bold;padding:0 3px;">发动机EBOM</td> <td><div class="datagrid-btn-separator"></div></td> <td><a onclick="addToStartManager()" class="easyui-linkbutton" data-options="iconCls:'fa fa-play',plain:true">添加到PPAP启动管理</a></td> <td><div class="datagrid-btn-separator"></div></td> <td><a onclick="onStartEdit()" class="easyui-linkbutton" data-options="iconCls:'fa fa-pencil-square-o',plain:true">编辑</a></td> <td> <div class="datagrid-btn-separator"></div> </td> <td><a class="easyui-linkbutton" data-options="iconCls:'fa fa-floppy-o',plain:true" onclick="editorUtils.accept()">保存</a></td> <td> <div class="datagrid-btn-separator"></div> </td> </tr> </table> </div>
完整js代码:
$(function() {
//initPPAPs();
initEngineEBOMs();
});
/**
* 初始化发动机EBOM列表
*/
function initEngineEBOMs(){
var dataGridObj = getDatagridObj();
dataGridObj.url = TpmPage.contextPath + '/ppap/invoke?methodName=queryEngineEBOMInitList&pagination=true';
dataGridObj.idField = 'ENGINE_EBOM_ID';
dataGridObj.pageSize = 20;
dataGridObj.sortName = 'ENGINE_EBOM_ID';
dataGridObj.sortOrder = 'asc';
dataGridObj.toolbar="#engine_ebom_tb";
dataGridObj.nowrap = true;
dataGridObj.singleSelect = false;
dataGridObj.checkOnSelect = true;
dataGridObj.columns = [[
{
field : 'ck',
checkbox : true
},{
field : 'ENGINE_EBOM_ID',
title : 'ENGINE_EBOM_ID',
width : 80,
align:'center',
hidden : true
//checkbox : true
},{
field : 'ENGINE_TYPE',
title : '机型',
width : 100,
//sortable : true,
align:'center'
},{
field : 'FUNCTION_MODULE',
title : '功能模块',
width : 200,
sortable : true,
align:'center'
},{
field : 'GROUP',
title : '组',
width : 100,
hidden : true,
align:'center'
},{
field : 'PART_CODE',
title : '零件号',
width : 150,
align : 'center'
},{
field : 'PART_NAME',
title : '零件名称',
width : 150,
align : 'center'
},{
field : 'PART_NAME_EN',
title : '零件名称(英文)',
width : 100,
hidden : true,
align : 'center'
},{
field : 'VERSION',
title :'版本',
width : 100,
hidden : true,
align : 'center'
},{
field : 'PART_NUM',
title : '零件数量',
width : 80,
hidden : true,
align : 'center'
},{
field : 'SUBSTITUTE_LIST',
title : '替代件列表',
width : 80,
hidden : true,
align : 'center'
},{
field : 'PUBLISH_DATE',
title : '发布日期',
width : 150,
hidden : true,
align : 'center'
},{
field : 'PART_PHASE',
title : '零件阶段',
width : 100,
hidden : true,
align : 'center'
},{
field : 'PART_IMPORTANCE_LEVEL',
title : '零件重要程度',
width : 100,
hidden : true,
align : 'center'
},{
field : 'PART_RESPONSIBLE_PERSON',
title : '零件负责人',
width : 100,
hidden : true,
align : 'center'
},{
field : 'PART_USE_POSITION',
title : '零件使用位置',
width : 200,
hidden : true,
align : 'center'
},{
field : 'REFERENCE_TIGHTENING_TORQUE',
title : '建议拧紧力矩',
width : 100,
hidden : true,
align : 'center'
},{
field : 'REMARK',
title : '备注',
width : 100,
align : 'center'
},{
field : 'SQE_ACCOUN',
title : '主担账户',
width : 100,
hidden : true,
align : 'center'
},{
field : 'SQE_NAME',
title : '主担',
width : 100,
align : 'center',
editor : {
type : 'textbox',
options : {
readonly : false
}
},
},{
field : 'PART_DESIGNER_ACCOUNT',
title : '设计师账户',
width : 100,
hidden : true,
align : 'center'
},{
field : 'PART_DESIGNER_NAME',
title : '设计师',
width : 100,
align : 'center',
editor : {
type : 'textbox',
options : {
readonly : false
}
},
},{
field : 'ENGINE_PRJ_CODE',
title : '项目代号',
width : 100,
align : 'center',
editor : {
type : 'textbox',
options : {
readonly : false
}
},
},{
field : 'SUPPLIER_NO',
title : '供应商编号',
width : 100,
align : 'center',
editor : {
type : 'textbox',
options : {
readonly : false
}
},
},{
field : 'SUPPLIER_NAME',
title : '供应商名称',
width : 100,
align : 'center'
}
]];
// 使easyUI中的editor可用
dataGridObj.onClickCell = editorUtils.onClickCell;
//查询列表
dataGridObj.remoteFilter = true;
$('#engine_ebom_datagrid').datagrid(dataGridObj);
$('#engine_ebom_datagrid').datagrid('enableFilter');
}
// 编辑datagrid的帮助类
var editorUtils = {editIndex:undefined};
editorUtils.onClickCell = function(index, field) {
var rows = $('#engine_ebom_datagrid').datagrid('getRows');
var data = rows[index];
if (editorUtils.editIndex != index){
$('#engine_ebom_datagrid').datagrid('selectRow', index).datagrid('beginEdit', index);
editorUtils.editIndex = index;
}
}
/**
* 启用编辑
*/
function onStartEdit(){
// 获取选中行数据
var rows = $('#engine_ebom_datagrid').datagrid('getSelections');
// 未选择数据
if (rows.length == 0) {
$.messager.alert("提示", "请选择一行数据");
return;
}
for(var i=0;i<rows.length;i++){
var rowIndex = $('#engine_ebom_datagrid').datagrid('getRowIndex',rows[i]);
$('#engine_ebom_datagrid').datagrid('selectRow', rowIndex).datagrid('beginEdit', rowIndex);
}
};
/**
* 保存
*/
editorUtils.accept = function(){
var dtd = $.Deferred();
var rows = $('#engine_ebom_datagrid').datagrid('getRows');
for(var i=0;i<rows.length;i++){
var rowIndex = $('#engine_ebom_datagrid').datagrid('getRowIndex',rows[i]);
$('#engine_ebom_datagrid').datagrid('selectRow', rowIndex).datagrid('endEdit', rowIndex);
}
var data = $('#engine_ebom_datagrid').datagrid('getRows');
$.ajax({
type : "POST",
url : TpmPage.contextPath + '/engineEbom/batchUpdateEngineEbom',
dataType: 'json',
contentType:'application/json',
data : JSON.stringify(data),
success : function(response) {
dtd.resolve();
console.log(response);
},
error : function(response) {
dtd.reject();
console.error(response);
}
});
refreshCurrent();
return dtd.promise();
}
/**
* 刷新当前页面
*/
function refreshCurrent() {
$('#engine_ebom_datagrid').datagrid('clearSelections');
$('#engine_ebom_datagrid').datagrid('reload');
}
/**
* 添加到PPAP启动管理列表
* fanj
* 2020-02-17
*/
function addToStartManager() {
// 获取勾选的数据
// 添加到PPAP启动管理列表前,对数据进行校验,主担,设计师,项目代号,供应商,零件图号,零件名称
// 添加到PPAP启动管理列表
}