Bootstrap框架----DataTables列表增加备注功能

时间:2022-08-25 21:00:21

我们在上一章节中已经学习了DataTables在BootStrap框架中的使用方式和初始化。
Bootstrap框架——DataTables列表示例

本章学习DataTables列表增加备注功能,可以通过点击按钮后编辑备注发送到后台保存入库。

官网例子参考

环境准备

DataTables列表折叠列的使用建立在上篇文件的基础上
Bootstrap框架——DataTables列表示例

最终效果

Bootstrap框架----DataTables列表增加备注功能
Bootstrap框架----DataTables列表增加备注功能

实现方案

Java代码
新增RemarkLog实体

package com.test.domain.entity;
import java.io.Serializable;
import java.util.Date;
/**
* 备注记录
*/

public class RemarkLog implements Serializable {
/**
*
*/

private static final long serialVersionUID = 1L;
private Date datetime; // 记录日期
private String operator; // 操作员
private String remark; // 备注

public RemarkLog(){}

public RemarkLog(String remark, String operator) {
this(remark, operator, new Date());
}

public RemarkLog(String remark, String operator, Date datetime) {
this.operator = operator;
this.remark = remark;
this.datetime = datetime;
}

public Date getDatetime() {
return datetime;
}

public void setDatetime(Date datetime) {
this.datetime = datetime;
}

public String getOperator() {
return operator;
}

public void setOperator(String operator) {
this.operator = operator;
}

public String getRemark() {
return remark;
}

public void setRemark(String remark) {
this.remark = remark;
}
}

Contacts增加remarks字段和id字段

package com.test.domain.entity;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;



/**
* 联系人
*
*
*/

public class Contacts {
private String id;// 姓名
private String name;// 姓名
private String tel;// 电话
private int gender;// 性别
private Date creatTime;//创建时间
private List<RemarkLog> remarks = new ArrayList<RemarkLog>();

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public String getTel() {
return tel;
}

public void setTel(String tel) {
this.tel = tel;
}

public Date getCreatTime() {
return creatTime;
}

public void setCreatTime(Date creatTime) {
this.creatTime = creatTime;
}

public int getGender() {
return gender;
}

public void setGender(int gender) {
this.gender = gender;
}

public List<RemarkLog> getRemarks() {
return remarks;
}

public void setRemarks(List<RemarkLog> remarks) {
this.remarks = remarks;
}

public String getId() {
return id;
}

public void setId(String id) {
this.id = id;
}









}

IndexController中添加

    @RequestMapping("/remark-add")
@ResponseBody
public Object addRemark(String id, String remark) {
if (StringUtils.isEmpty(id) || StringUtils.isEmpty(remark)) {
return JSONResult.error("未找到数据");
}

return addRemark("操作人", id, remark)
? JSONResult.success("成功")
: JSONResult.error("失败");
}

public boolean addRemark(String operator, String id, String remark) {
return mongoTemplate.updateFirst(Query.query(Criteria.where("_id").is(id)),
new Update().push("remarks", new RemarkLog(remark, operator)).set("updateDate", DateUtils.now()),
Contacts.class).getN() > 0;
}

JSONResult实体

package com.test.web.message.response;

/**
* JSONResult
* 标准化的JSON响应
*
* <pre>
* {@link JSONResult#success(Object)}
* {@link JSONResult#error(String)}
* </pre>
*
*
*/

public class JSONResult {

/**
* 成功的代码
*/

public static final int CODE_SUCCESS = 0;

/**
* 错误的代码,可根据错误类型进行详细分类
*/

public static final int CODE_ERROR = -1;

/**
* 空白的成功响应
*/

public static final JSONResult RESULT_SUCCESS_NO_DATA = new JSONResult(CODE_SUCCESS, null, null);

private int code;
private String msg;
private Object data;

/**
* 创建一个成功的响应
*
* @param data
* @return
*/

public static JSONResult success(Object data) {
return new JSONResult(CODE_SUCCESS, null, data);
}

/**
* 创建一个错误的响应
*
* @param msg
* @return
*/

public static JSONResult error(String msg) {
return new JSONResult(CODE_ERROR, msg, null);
}

/**
* @param code
* @param msg
* @param data
*/

public JSONResult(int code, String msg, Object data) {
this.code = code;
this.setMsg(msg);
this.data = data;
}

public int getCode() {
return code;
}

public JSONResult setCode(int code) {
this.code = code;
return this;
}

public Object getData() {
return data;
}

public JSONResult setData(Object data) {
this.data = data;
return this;
}

public String getMsg() {
return msg;
}

public JSONResult setMsg(String msg) {
this.msg = msg;
return this;
}

}

Jsp代码

html中增加对应列

<th width="8%" class="desktop">备注</th>

js
columns列中增加代码

            {
"data": "id",
"class": "text-center",
"render": function (id, type, row, position) {
return '<span>' + (row.remarks.length ? row.remarks[row.remarks.length - 1].remark : '') + '</span> <a href="javascript:;" class="glyphicon glyphicon-pencil edit-comment" id="' + id + '"/>';
}
},

dataTables初始化方法后面增加点击事件

.on('click', '.edit-comment', function () {
var $span = $(this).hide().prev().hide();
var $input = $('<input type="text" class="form-control input-simple input-remark" name="remark"/>').val('');
$(this).before($input);
$input.focus(); // 让文本框获取焦点
}).on('keypress blur', '.input-remark', function (e) {
if (e.type == 'keypress') {
if (e.keyCode == 13) $(this).blur(); // 回车也触发失焦事件
return;
}
var $input = $(this);
var endEdit = function (remark) {
remark ? $input.prev().text(remark).show() : $input.prev().show();
$input.next().show();
$input.remove();
};

if (!$input.val()) {
return endEdit();
}

$.ajax({
url: "/remark-add",
type: "POST",
data: {
id: $input.next().attr("id"),
remark: $input.val()
},
success: function (res) {
if (res.code) return alert('更新失败');
endEdit($input.val());
},
error: function (err) {
alert('更新失败: ' + err.status + ' ' + err.statusText);
}
});
});

相关文章