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>
  • 相关阅读:
    BZOJ.2916.[POI1997]Monochromatic Triangles(三元环)
    Codeforces.724G.Xor-matic Number of the Graph(线性基)
    BZOJ.3498.[PA2009]Cakes(三元环 枚举)
    BZOJ.3545.[ONTAK2010]Peaks(线段树合并)
    BZOJ.4919.[Lydsy1706月赛]大根堆(线段树合并/启发式合并)
    BZOJ.2212.[POI2011]Tree Rotations(线段树合并)
    BZOJ.4552.[HEOI2016/TJOI2016]排序(线段树合并/二分 线段树)
    Codeforces.547C.Mike and Foam(容斥/莫比乌斯反演)
    BZOJ.4516.[SCOI2016]幸运数字(线性基 点分治)
    页面置换算法
  • 原文地址:https://www.cnblogs.com/wt869054461/p/3948572.html
Copyright © 2011-2022 走看看