Статьи

Редактируемая сетка с jQuery, Bootstrap и Shield UI Lite

В этом кратком совете я приведу несколько простых шагов по настройке редактируемой сетки (или таблицы) с использованием Bootstrap и Shield UI Lite .

Shield UI Lite — это библиотека jQuery с открытым исходным кодом, которая включает, помимо прочего, сетку jQuery. Сетка поддерживает редактирование «из коробки», а также сортировку, группировку и различные редакторы столбцов.

О Shield UI Lite

Shield UI — компания по разработке веб-компонентов, которая специализируется на разработке, разработке и маркетинге виджетов UI для разработки на чистом JavaScript, а также для разработки на ASP.NET, ASP.NET MVC и Java Wicket. Компания предлагает компоненты визуализации данных , а также целый ряд стандартных компонентов веб-разработки, таких как сетки, штрих-коды — одномерные и двухмерные, расширенные компоненты ввода — такие как числовые и маскированные текстовые поля и многое другое .

Shield UI Lite Suite является одной из новейших библиотек с открытым исходным кодом на рынке, и в этом особенность его заключается в том, что он содержит множество компонентов, каждый из которых является многофункциональным и зрелым. Это включает в себя jQuery Grid , который поддерживает все важные операции веб-сетки из коробки. Компонент поддерживает редактирование со встроенным или стандартным редактированием формы редактирования, а также редактирование с помощью внешней формы. Также поддерживается редактирование ячеек.

В дополнение к этому, Shield UI Grid имеет встроенный компонент источника данных, который облегчает привязку ко всем типам данных — от локальных структур JSON до удаленных веб-служб; встроенный источник данных также заботится обо всех операциях удаления, обновления и вставки.

Для приложений с большими объемами данных виджет JQuery пользовательского интерфейса Shield предлагает расширенную функцию виртуальной прокрутки, которая значительно повышает производительность даже при работе с миллионами реальных записей данных. Чтобы увидеть больше примеров компонента и его опций, вы можете обратиться к онлайн-демонстрациям или документации .

Использование кода

Для редактируемой сетки, которую мы будем создавать, я использую локальный источник данных, чтобы все было просто. Исходный код для библиотек можно найти на GitHub . Полный пример кода вместе со всеми используемыми примерами данных, а также дополнительные CSS доступны в демонстрационной версии CodePen .

Первым шагом в настройке макета является использование стандартного контейнера Bootstrap. В нашем случае это div Поскольку любой стандартный компонент веб-сетки обычно содержит много данных, наш макет занимает всю ширину экрана.

Код для этого шага прост и выглядит следующим образом:

 <div class="col-md-12">
  <div class="panel panel-default">
    <div class="panel-heading">
      <h4 class="text-center">Bootstrap Editable jQuery Grid
      <span class="fa fa-edit pull-right bigicon"></span></h4>
    </div>
    <div class="panel-body text-center">
      <div id="grid"></div>
    </div>
  </div>
</div>

Это весь HTML-код, необходимый для настройки образца. Следующим шагом является добавление ссылок на все ресурсы, используемые в образце, такие как таблицы стилей, файлы JavaScript и данные.

Данные, используемые в примере, представляют собой стандартную коллекцию JSON, которая загружается отдельно для передачи в компонент сетки. Использование локального источника данных упрощает настройку. Кроме того, нам нужна таблица стилей для сетки и JavaScript для ее инициализации.

Включение этих ресурсов показано ниже:

CSS:

 <link rel="stylesheet" href="shieldui-lite.min.css">

Сценарии:

 <script src="shieldui-lite-all.min.js"></script>
<script src="shortGridData.js"></script>

Настройка сетки

Следующим шагом в этом процессе является настройка компонента сетки Shield UI Lite. После того, как мы включили необходимые ресурсы, мы можем инициализировать его с помощью некоторого JavaScript в обработчике document.ready.

В описании компонента есть две логические части. Первый — это обработка источника данных для данных, которые будут отображаться в сетке, а второй — настройка столбцов, которые будут фактически отображаться, а также любые дополнительные параметры, такие как сортировка, эффекты наведения и т. Д.

Сетка Shield UI Lite имеет встроенное свойство dataSource Чтобы связать dataSourcedata

Код для достижения этого показан ниже:

 dataSource: {
  data: gridData,
  schema: {
    fields: {
      id: { path: "id", type: Number },
      age: { path: "age", type: Number },
      name: { path: "name", type: String },
      company: { path: "company", type: String },
      month: { path: "month", type: Date },
      isActive: { path: "isActive", type: Boolean },
      email: { path: "email", type: String },
      transport: { path: "transport", type: String }
    }
  }
}

Включение редактирования

Следующим шагом в процессе настройки приложения является выбор того, какие свойства будут доступны в сетке, а также описание столбцов, которые будут отображаться.

Каждый столбец может иметь дополнительные свойства, такие как текст заголовка и ширина. Настройка свойства width

Код для всех свойств в элементе управления приведен ниже:

 rowHover: false,
columns: [
  { field: "name", title: "Person Name", width: "120px" },
  { field: "age", title: "Age", width:"80px" },
  { field: "company", title: "Company Name" },
  { field: "month", title: "Date of Birth", 
  format: "{0:MM/dd/yyyy}", width:"120px" },
  { field: "isActive", title: "Active" },
  { field: "email", title: "Email Address", width: "250px" },
  { field: "transport", title: "Custom Editor", width: "120px", editor: myCustomEditor },
  {
    width: "104px",
    title: "Delete Column",
    buttons: [
      { cls: "deleteButton", commandName: "delete", 
        caption: "<img src='source/delete.png' />
        <span>Delete</span>" }
    ]
  }
],
editing: {
  enabled: true,
  event: "click",
  type: "cell",
  confirmation: {
    "delete": {
      enabled: true,
      template: function (item) {
        return "Delete row with ID = " + item.id
      }
    }
  }
},

Настройка пользовательского редактора

Виджет поддерживает множество удобных редакторов из коробки. После того, как элемент управления переведен в режим редактирования, щелкнув любую из ячеек, редактор ячейки будет зависеть от типа значений в этой ячейке. Например, числовое значение будет иметь числовой ввод с кнопками увеличения и уменьшения. Столбец даты будет иметь ввод календаря для удобного выбора даты.

Существует также возможность предоставления пользовательского редактора для столбца. Например, вместо стандартного текстового поля у нас может быть выпадающий список со всеми значениями для этого столбца.

Это может быть достигнуто путем присоединения к событию getCustomEditorValue

Это продемонстрировано в следующем фрагменте кода для событий:

 events: {
  getCustomEditorValue: function (e) {
    e.value = $("#dropdown").swidget().value();
    $("#dropdown").swidget().destroy();
  }
}

И пользовательский редактор:

 function myCustomEditor(cell, item) {
  $('<div id="dropdown"/>')
  .appendTo(cell)
  .shieldDropDown({
    dataSource: {
      data: ["motorbike", "car", "truck"]
    },
    value: !item["transport"] ? null : item["transport"].toString()
  }).swidget().focus();
}

Если вы хотите просмотреть дополнительную информацию об опциях в виджете сетки, вы можете обратиться к этому разделу документации.

На этом наша настройка завершена, и элемент управления готов к использованию.

Посмотреть полную рабочую демонстрацию на CodePen

Не забудьте щелкнуть внутри любой ячейки содержимого в таблице / сетке, чтобы увидеть, как работает функция редактирования. Вы можете посмотреть другие примеры использования jQuery Grid компонента Shield UI на веб-сайте Shield UI .