1. 程式人生 > >Bootstrap框架----DataTables列表增加備註功能

Bootstrap框架----DataTables列表增加備註功能

我們在上一章節中已經學習了DataTables在BootStrap框架中的使用方式和初始化。
Bootstrap框架——DataTables列表示例

本章學習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);
                    }
                });
});

相關推薦

Bootstrap框架----DataTables列表增加備註功能

我們在上一章節中已經學習了DataTables在BootStrap框架中的使用方式和初始化。 Bootstrap框架——DataTables列表示例 本章學習DataTables列表增加備註功能,可以通過點選按鈕後編輯備註傳送到後臺儲存入庫。 官網例子參考

Bootstrap框架----DataTables列表摺疊列

$(document).ready(function() { $('.datepicker').datetimepicker({ language : 'zh-CN', autoclose : true }); refreshTable();//重

NET快速資訊化系統開發框架 V3.2 -&gt; “使用者管理”主介面使用多表頭展示、增加列印功能

  RDIFrameowrk.NET 使用者管理是使用非常頻繁的模組,由於需要展示的欄位比較多,以前的展示方式顯得不是太規範,現3.2版本使用者管理主介面進行了全新的設計,資料列表展示使用了Dev家族全新的GridControl控制元件。對列的展示進行使用了多表頭展示的方式,同時新增了列印使用者

基於Metronic的Bootstrap開發框架--工作流模塊功能介紹

表單 arp 一個 修改 審批表 因此 之前 metronic bootstra 在很早之前的隨筆裏面,已經介紹了WInform框架中工作流模塊的功能,不過由於工作流模塊中界面處理部分比較麻煩,一直沒有在Bootstrap框架中進行集成,最近由於項目的關系,花了不少精力,把

NET快速資訊化系統開發框架 V3.2 -> “使用者管理”主介面使用多表頭展示、增加列印功能

private void LinkOnCreateMarginalHeaderArea(object sender, CreateAreaEventArgs e) { string titile = "使用者列表"; P

Python Web框架Django 入門(二)——增加APP功能模組

建立第一個APP專案 上一篇使用 django-admin.py 建立了HelloWorld 專案,在HelloWorld目錄下新增一個APP模組,命令如下: python manage.py startapp app 執行建立命令後文件目錄如下圖: 目錄說

利用VUE框架,實現列表分頁功能

原創作品轉載請註明出處 先來看一下效果圖: 功能描述: 1. 點選頁面序號跳轉到相應頁面; 2. 點選單左/單右,向後/向前跳轉一個頁面; 3. 點選雙左/雙右,直接跳轉到最後一頁/第一頁; 3. 一次顯示當前頁面的前三個與後三

簡單響應式Bootstrap框架中文官網頁面模板

str 頁面 nbsp 中文 技術分享 http images bsp ots 鏈接:http://pan.baidu.com/s/1o7MQ6RC 密碼:kee5簡單響應式Bootstrap框架中文官網頁面模板

bootstrap-自定義列表

bootstrap-自定義列表組1.運行效果如圖所示2.實現代碼如下<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible

【JAVAEE學習筆記】hibernate04:查詢種類、HQL、Criteria、查詢優化和練習為客戶列表增加查詢條件

沒有 arrays getpara tex response 寫法 sum exceptio 提高 一、查詢種類 1.oid查詢-get 2.對象屬性導航查詢 3.HQL 4.Criteria 5.原生SQL 二、查詢-HQL語法 //學習HQL語法 public

整合django和bootstrap框架

word log ons 替換 shee head base 版本 fin 環境: python版本:2.7.8 django版本:1.7.1 bootstrap版本:3.3.0 首先github上面有兩個開源的項目用來整合django和bootstrap. ht

bootstrap框架 - jquery庫 - 引用地址

otc pan -s pac boot http trap strong 3.2 bootstrap框架: //netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.min.css jquery庫: http:/

bootstrap筆記之——列表

gin clear 方式 而且 block 集中 spa ots hit 一、列表   1、無序列表<ul>     給無序列表添加一個類名“.list-unstyled”,這樣就可以去除默認的列表樣式的風格。除了項目編號之外,還將列表默認的左邊內距也清0了。

【轉】Bootstrap 框架 柵格布局系統底層設計原理

auto open 分析 大致 感覺 copy 效果 布局 str 如果你是初次接觸Bootstrap,你一定會為它的柵格布局感到敬佩。事實上,這個布局系統提供了一套響應式的布局解決方案。 既然這麽好用,那他是如何用CSS來實現的呢? 我特意去Bootstrap官方下載了源

BootStrap框架選擇

clean ash lte sta 點擊 -a ring 介紹 board 1. mentronic4.0 效果非常好,但是商業版收費 下面是一個.net的系統,基於mentronic4.0開發,感覺不錯 http://www.cnblogs.com/guozi

Springmvc+mybatis+restful+bootstrap框架整合

ssa 存儲 strong lan 介紹 int boot 客戶端 ogr Spring MVC工作流程圖 圖一 圖二 Spring工作流程描述 1. 用戶向服務器發送請求,請求被Spring 前端控制Servelt DispatcherServlet捕

Bootstrap框架中,form-control的效果

bootstrap 使用 ots ron 效果 如果 成了 control 就是 在Bootstrap框架中,通過定制了一個類名`form-control`,也就是說,如果這幾個元素使用了類名“form-control”,將會實現一些設計上的定制效果。 1、寬度變成了100

Tornado框架實現圖形驗證碼功能

tor length turn 黑客 body world 工作流 params fun 圖形驗證碼是項目開發過程中經常遇到的一個功能,在很多語言中都有對應的不同形式的圖形驗證碼功能的封裝,python 中同樣也有類似的封裝操作,通過繪制生成一個指定的圖形數據,讓前端HTM

Bootstrap框架

img 大小寫 head thumb 鏈接 container 媒體查詢 直接 api Bootstrap介紹 Bootstrap是Twitter開源的基於HTML、CSS、JavaScript的前端框架。 它是為實現快速開發Web應用程序而設計的一套前端工具包。 它支持響

封裝selenium自動化框架中的截圖功能

odi cas cli 異常 函數 截圖 none __init__ 註意   對selenium自帶的截圖功能進行封裝:   以下為封裝的代碼,自定義一個.py文件即可,圖片路徑自己設置一個。 1 #coding:utf-8 2 3 class S