JSFiddle - React, Tailwind, and code Playground

HTML

<script src="http://cdn.kendostatic.com/2012.3.1315/js/kendo.all.min.js"></script>
<link rel="stylesheet" href="http://cdn.kendostatic.com/2012.3.1315/styles/kendo.common.min.css">
<link rel="stylesheet" href="http://cdn.kendostatic.com/2012.3.1315/styles/kendo.default.min.css">
<div id="grid"></div>
<a id="cancel" class="k-button">Cancel</a>
<table id="view" style="width: 300px">
  <thead>
    <tr>
      <th>Name</th>
      <th>Email</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><input data-bind="value: Name" /></td>
      <td><input data-bind="value: Email" /></td>
    </tr>
  </tbody>
</table>

JavaScript

var local = [{ Id: 1, Name: 'Brett', Email: '[email protected]' }];

var model = function () {
  this.Id = 0;
  this.Name = '...';
  this.Email = '...';
};

var ds = new kendo.data.DataSource({
  pageSize: 10,
  schema: {
    model: {
      id: 'Id',
      fields: {
        Id: { type: 'number', editable: false, defaultValue: 0 },
        Name: {},
        Email: {}
      }
    }
  },
  serverPaging: true,
  transport: {
    read: function (options) {
      options.success(local);
    },
    create: function (options) {
      options.data.Id = ds.data().length;
      options.success(options.data);
    }
  }
});

var grid = $('#grid').kendoGrid({
  columns: [
    { field: 'Name' },
    { field: 'Email' }
  ],
  dataSource: ds,
  pageable: {
    refresh: true
  },
  selectable: 'row',
  toolbar: kendo.template('<a id="add" class="k-button">Add new record</a><a id="save" class="k-button">Save</a>'),
  change: function (e) {
    kendo.bind($('#view'), this.dataItem(this.select()[0]));
  },
  dataBinding: function (e) {
    if (e.action === 'itemchange') {
      e.preventDefault();
    }
  }
}).data('kendoGrid');

$('#add').on('click', function () {
  ds.add(new model());
});
$('#save').on('click', function () {
  grid.saveChanges();
});
$('#cancel').on('click', function () {
  grid.cancelChanges();
});