| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212 | <!DOCTYPE html><html><head>    <meta http-equiv="X-UA-Compatible" content="IE=edge">    <title>jsGrid - Data Manipulation</title>    <link rel="stylesheet" type="text/css" href="demos.css" />    <link href='http://fonts.googleapis.com/css?family=Open+Sans:300,600,400' rel='stylesheet' type='text/css'>    <link rel="stylesheet" type="text/css" href="../css/jsgrid.css" />    <link rel="stylesheet" type="text/css" href="../css/theme.css" />    <link rel="stylesheet" href="http://code.jquery.com/ui/1.11.2/themes/cupertino/jquery-ui.css">    <script src="http://code.jquery.com/jquery-1.10.2.js"></script>    <script src="http://code.jquery.com/ui/1.11.2/jquery-ui.js"></script>    <script src="http://ajax.aspnetcdn.com/ajax/jquery.validate/1.9/jquery.validate.min.js"></script>    <script src="db.js"></script>    <script src="../src/jsgrid.core.js"></script>    <script src="../src/jsgrid.load-indicator.js"></script>    <script src="../src/jsgrid.load-strategies.js"></script>    <script src="../src/jsgrid.sort-strategies.js"></script>    <script src="../src/jsgrid.field.js"></script>    <script src="../src/fields/jsgrid.field.text.js"></script>    <script src="../src/fields/jsgrid.field.number.js"></script>    <script src="../src/fields/jsgrid.field.select.js"></script>    <script src="../src/fields/jsgrid.field.checkbox.js"></script>    <script src="../src/fields/jsgrid.field.control.js"></script>    <style>        .ui-widget *, .ui-widget input, .ui-widget select, .ui-widget button {            font-family: 'Helvetica Neue Light', 'Open Sans', Helvetica;            font-size: 14px;            font-weight: 300 !important;        }        .details-form-field input,        .details-form-field select {            width: 250px;            float: right;        }        .details-form-field {            margin: 30px 0;        }        .details-form-field:first-child {            margin-top: 10px;        }        .details-form-field:last-child {            margin-bottom: 10px;        }        .details-form-field button {            display: block;            width: 100px;            margin: 0 auto;        }        input.error, select.error {            border: 1px solid #ff9999;            background: #ffeeee;        }        label.error {            float: right;            margin-left: 100px;            font-size: .8em;            color: #ff6666;        }    </style></head><body>    <h1>Data Manipulation</h1>    <div id="jsGrid"></div>    <div id="detailsDialog">        <form id="detailsForm">            <div class="details-form-field">                <label for="name">Name:</label>                <input id="name" name="name" type="text" />            </div>            <div class="details-form-field">                <label for="age">Age:</label>                <input id="age" name="age" type="number" />            </div>            <div class="details-form-field">                <label for="address">Address:</label>                <input id="address" name="address" type="text" />            </div>            <div class="details-form-field">                <label for="country">Country:</label>                <select id="country" name="country">                    <option value="">(Select)</option>                    <option value="1">United States</option>                    <option value="2">Canada</option>                    <option value="3">United Kingdom</option>                    <option value="4">France</option>                    <option value="5">Brazil</option>                    <option value="6">China</option>                    <option value="7">Russia</option>                </select>            </div>            <div class="details-form-field">                <label for="married">Is Married</label>                <input id="married" name="married" type="checkbox" />            </div>            <div class="details-form-field">                <button type="submit" id="save">Save</button>            </div>        </form>    </div>    <script>        $(function() {            $("#jsGrid").jsGrid({                height: "70%",                width: "100%",                editing: true,                autoload: true,                paging: true,                deleteConfirm: function(item) {                    return "The client \"" + item.Name + "\" will be removed. Are you sure?";                },                rowClick: function(args) {                    showDetailsDialog("Edit", args.item);                },                controller: db,                fields: [                    { name: "Name", type: "text", width: 150 },                    { name: "Age", type: "number", width: 50 },                    { name: "Address", type: "text", width: 200 },                    { name: "Country", type: "select", items: db.countries, valueField: "Id", textField: "Name" },                    { name: "Married", type: "checkbox", title: "Is Married", sorting: false },                    {                        type: "control",                        modeSwitchButton: false,                        editButton: false,                        headerTemplate: function() {                            return $("<button>").attr("type", "button").text("Add")                                .on("click", function () {                                    showDetailsDialog("Add", {});                                });                        }                    }                ]            });            $("#detailsDialog").dialog({                autoOpen: false,                width: 400,                close: function() {                    $("#detailsForm").validate().resetForm();                    $("#detailsForm").find(".error").removeClass("error");                }            });            $("#detailsForm").validate({                rules: {                    name: "required",                    age: { required: true, range: [18, 150] },                    address: { required: true, minlength: 10 },                    country: "required"                },                messages: {                    name: "Please enter name",                    age: "Please enter valid age",                    address: "Please enter address (more than 10 chars)",                    country: "Please select country"                },                submitHandler: function() {                    formSubmitHandler();                }            });            var formSubmitHandler = $.noop;            var showDetailsDialog = function(dialogType, client) {                $("#name").val(client.Name);                $("#age").val(client.Age);                $("#address").val(client.Address);                $("#country").val(client.Country);                $("#married").prop("checked", client.Married);                formSubmitHandler = function() {                    saveClient(client, dialogType === "Add");                };                $("#detailsDialog").dialog("option", "title", dialogType + " Client")                    .dialog("open");            };            var saveClient = function(client, isNew) {                $.extend(client, {                    Name: $("#name").val(),                    Age: parseInt($("#age").val(), 10),                    Address: $("#address").val(),                    Country: parseInt($("#country").val(), 10),                    Married: $("#married").is(":checked")                });                $("#jsGrid").jsGrid(isNew ? "insertItem" : "updateItem", client);                $("#detailsDialog").dialog("close");            };        });    </script></body></html>
 |