zoukankan      html  css  js  c++  java
  • SlickGrid example 3b: 支持撤销操作的编辑单元

    不同类型的属性可以按不同的风格编辑。

    每个编辑单元可以设置不同的验证方法。
    历史编辑可以撤销。
     
    代码:
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>SlickGrid example 3b: Editing with undo</title>
    <link rel="stylesheet" href="../css/slick.grid.css" type="text/css" />
    <link rel="stylesheet"
    href="../css/smoothness/jquery-ui-1.8.16.custom.css" type="text/css" />
    <link rel="stylesheet" href="../css/examples.css" type="text/css" />
    <style>
    .cell-title {
    font-weight: bold;
    }
     
    .cell-effort-driven {
    text-align: center;
    }
    </style>
    </head>
    <body>
    <div style="position: relative">
    <div style=" 600px;">
    <div id="myGrid" style=" 100%; height: 500px;"></div>
    </div>
     
    <div class="options-panel">
    <h2>Demonstrates:</h2>
    <ul>
    <li>Using "editCommandHandler" option to intercept edit
    commands and implement undo support</li>
    </ul>
     
    <h2>Controls:</h2>
    <button onclick="undo()">
    <img src="../images/arrow_undo.png" align="absmiddle"> Undo
    </button>
    </div>
    </div>
     
    <script src="../js/firebugx.js"></script>
    <script src="../js/jquery-1.7.min.js"></script>
    <script src="../js/jquery-ui-1.8.16.custom.min.js"></script>
    <script src="../js/jquery.event.drag-2.0.min.js"></script>
    <script src="../js/slick.core.js"></script>
    <script src="../js/slick.formatters.js"></script>
    <script src="../js/slick.editors.js"></script>
    <script src="../js/slick.grid.js"></script>
     
    <script type="text/javascript">
    //验证方法
    function requiredFieldValidator(value) {
    if (value == null || value == undefined || !value.length) {
    return {
    valid : false,
    msg : "This is a required field"
    };
    } else {
    return {
    valid : true,
    msg : null
    };
    }
    }
     
    var grid;
    var data = [];
    //定义列,不同的列可以设置不同的编辑风格和验证方法
    var columns = [ {
    id : "title",
    name : "Title",
    field : "title",
    width : 120,
    cssClass : "cell-title",
    editor : Slick.Editors.Text,
    validator : requiredFieldValidator
    }, {
    id : "desc",
    name : "Description",
    field : "description",
    width : 100,
    editor : Slick.Editors.LongText
    }, {
    id : "duration",
    name : "Duration",
    field : "duration",
    editor : Slick.Editors.Text
    }, {
    id : "%",
    name : "% Complete",
    field : "percentComplete",
    width : 80,
    resizable : false,
    formatter : Slick.Formatters.PercentCompleteBar,
    editor : Slick.Editors.PercentComplete
    }, {
    id : "start",
    name : "Start",
    field : "start",
    minWidth : 60,
    editor : Slick.Editors.Date
    }, {
    id : "finish",
    name : "Finish",
    field : "finish",
    minWidth : 60,
    editor : Slick.Editors.Date
    }, {
    id : "effort-driven",
    name : "Effort Driven",
    width : 80,
    minWidth : 20,
    maxWidth : 80,
    cssClass : "cell-effort-driven",
    field : "effortDriven",
    formatter : Slick.Formatters.Checkmark,
    editor : Slick.Editors.Checkbox
    } ];
     
    var options = {
    editable : true,
    enableAddRow : false,
    enableCellNavigation : true,
    asyncEditorLoading : false,
    autoEdit : false,
    editCommandHandler : queueAndExecuteCommand //该属性可以实现撤销操作
    };
    //操作记录队列
    var commandQueue = [];
    //记录操作
    function queueAndExecuteCommand(item, column, editCommand) {
    commandQueue.push(editCommand);
    editCommand.execute();
    }
    //撤销操作
    function undo() {
    var command = commandQueue.pop();
    if (command && Slick.GlobalEditorLock.cancelCurrentEdit()) {
    command.undo();
    grid.gotoCell(command.row, command.cell, false);
    }
    }
     
    $(function() {
    for ( var i = 0; i < 100; i++) {
    var d = (data[i] = {});
     
    d["title"] = "Task " + i;
    d["description"] = "This is a sample task description.  It can be multiline";
    d["duration"] = "5 days";
    d["percentComplete"] = Math.round(Math.random() * 100);
    d["start"] = "01/01/2012";
    d["finish"] = "01/05/2012";
    d["effortDriven"] = (i % 5 == 0);
    }
     
    grid = new Slick.Grid("#myGrid", data, columns, options);
    })
    </script>
    </body>
    </html>
  • 相关阅读:
    【转】异常处理模块
    【转】整套完整安全的API接口解决方案
    百度地图API功能集锦
    VS2015 使用Razor编写MVC视图时,Razor智能提示消失,报各种红线解决方案。
    算法初涉-解决比9*9数独更复杂的结构
    SQL时间相关
    ubuntu 安装
    dwa 设置多个目标点,倒车设计
    ros 信号周期的简单实现
    C++学习记录 第一章:初始
  • 原文地址:https://www.cnblogs.com/wt869054461/p/3948572.html
Copyright © 2011-2022 走看看