jQuery kendo grid как добавить всплывающую подсказку для редактирования значков, обновления, отмены, удаления

#jquery #kendo-grid

Вопрос:

ссылка на рабочий код приведена ниже

пожалуйста, нажмите здесь, чтобы увидеть код

Я попытался использовать поле заголовка, но при наведении мыши оно не отображается.

 <!DOCTYPE html>
<html>
  <head>
<title>Kendo UI Grid Icon Buttons</title>
<link rel="stylesheet" href="https://kendo.cdn.telerik.com/2017.2.504/styles/kendo.common.min.css" />
<link rel="stylesheet" href="https://kendo.cdn.telerik.com/2017.2.504/styles/kendo.default.min.css" />

<script src="https://kendo.cdn.telerik.com/2017.2.504/js/jquery.min.js"></script>
<script src="https://kendo.cdn.telerik.com/2017.2.504/js/kendo.all.min.js"></script>
<style>
  
  .k-grid .k-grid-toolbar .k-grid-add,
  .k-grid tbody .k-grid-edit,
  .k-grid tbody .k-grid-update,
  .k-grid tbody .k-grid-cancel,
  .k-grid tbody .k-grid-delete {
    min-width: 0;
  }
  
  .k-grid .k-grid-toolbar .k-grid-add .k-icon,
  .k-grid tbody .k-grid-edit .k-icon,
  .k-grid tbody .k-grid-update .k-icon,
  .k-grid tbody .k-grid-cancel .k-icon,
  .k-grid tbody .k-grid-delete .k-icon {
    margin: 0;
  }
  
</style>
  </head>
  <body>
    <div id="example">
      <div id="grid"></div>

      <script>
    $(document).ready(function () {
      var crudServiceBaseUrl = "https://demos.telerik.com/kendo-ui/service",
          dataSource = new kendo.data.DataSource({
            transport: {
              read:  {
                url: crudServiceBaseUrl   "/Products",
                dataType: "jsonp"
              },
              update: {
                url: crudServiceBaseUrl   "/Products/Update",
                dataType: "jsonp"
              },
              destroy: {
                url: crudServiceBaseUrl   "/Products/Destroy",
                dataType: "jsonp"
              },
              create: {
                url: crudServiceBaseUrl   "/Products/Create",
                dataType: "jsonp"
              },
              parameterMap: function(options, operation) {
                if (operation !== "read" amp;amp; options.models) {
                  return {models: kendo.stringify(options.models)};
                }
              }
            },
            batch: true,
            pageSize: 10,
            schema: {
              model: {
                id: "ProductID",
                fields: {
                  ProductID: { editable: false, nullable: true },
                  ProductName: { validation: { required: true } }
                }
              }
            }
          });

      $("#grid").kendoGrid({
        dataSource: dataSource,
        pageable: true,
        height: 500,
        toolbar: [{name: "create", text: " "}],
        columns: [
          { field: "ProductName" },
          { command: [
            {name: "edit", text: { edit: " ", update: " ", cancel: " " }},
            { name: "destroy", text: " "}
          ], title: "Action", width: "250px" }
        ],
        editable: "inline"
      });
    });

  </script>
</div>

  </body>
</html>
 

добавил поле всплывающей подсказки и попробовал, но я не получил всплывающую подсказку при наведении мыши.
Мне нужно, чтобы всплывающая подсказка отображалась на мыши каждого значка, во
всплывающей подсказке столбца действий :- «Редактировать», «Обновить», «Отменить», «Удалить»

Ответ №1:

Один из способов сделать это-создать подсказку кендо для каждой кнопки и указать свойством filter класс кнопки.

Задает селектор для элементов в контейнере, который будет отображать всплывающую подсказку.

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

 $("#grid").kendoTooltip({
    filter: ".k-grid-edit",
    content: function (e) {
        return "edit";
    }
});
 

Вот додзе с полным примером ниже:

 <div id="grid"></div>

<script>
    function hideKendoToolTips() {
      $(".k-tooltip").hide(); 
    }
    
    $(document).ready(function () {
      var crudServiceBaseUrl = "https://demos.telerik.com/kendo-ui/service",
          dataSource = new kendo.data.DataSource({
            transport: {
              read:  {
                url: crudServiceBaseUrl   "/Products",
                dataType: "jsonp"
              },
              update: {
                url: crudServiceBaseUrl   "/Products/Update",
                dataType: "jsonp"
              },
              destroy: {
                url: crudServiceBaseUrl   "/Products/Destroy",
                dataType: "jsonp"
              },
              create: {
                url: crudServiceBaseUrl   "/Products/Create",
                dataType: "jsonp"
              },
              parameterMap: function(options, operation) {
                if (operation !== "read" amp;amp; options.models) {
                  return {models: kendo.stringify(options.models)};
                }
              }
            },
            batch: true,
            pageSize: 10,
            schema: {
              model: {
                id: "ProductID",
                fields: {
                  ProductID: { editable: false, nullable: true },
                  ProductName: { validation: { required: true } }
                }
              }
            }
          });

      $("#grid").kendoGrid({
        dataSource: dataSource,
        pageable: true,
        height: 500,
        toolbar: [{name: "create", text: " "}],
        columns: [
          { field: "ProductName" },
          { command: [
            {name: "edit", text: { edit: " ", update: " ", cancel: " " }},
            { name: "destroy", text: " "}
          ], title: "amp;nbsp;", width: "250px" }
        ],
        editable: "inline",
        beforeEdit: hideKendoToolTips,
        cancel: hideKendoToolTips,
        save: hideKendoToolTips
      });
      
      $("#grid").kendoTooltip({
        filter: ".k-grid-edit",
        content: function(e){
          return "edit";
        }
      });
      $("#grid").kendoTooltip({
        filter: ".k-grid-delete",
        content: function(e){
          return "delete";
        }
      });
      $("#grid").kendoTooltip({
        filter: ".k-grid-update",
        content: function(e) {
          return "update";
        }
      });
      $("#grid").kendoTooltip({
        filter: ".k-grid-cancel",
        content: function(e){
          return "cancel";
        }
      });
    });
</script>
 

Вы заметите , что я добавил функцию hideKendoToolTips , и она вызывается во время сетки beforeEdit cancel и save событий. Без этой функции всплывающая подсказка не будет автоматически скрываться после нажатия кнопок редактирования, обновления или отмены. Я думаю, что это связано с кнопкой, которой назначена подсказка, которая удаляется при нажатии на нее. В любом случае, эта функция предназначена только для того, чтобы скрыть всплывающую подсказку после нажатия кнопки.

Ответ №2:

Используйте событие привязки данных сетки для добавления заголовков к кнопкам, например:

 $("#grid").kendoGrid({
    dataSource: dataSource,
    dataBound: function () {
         $(".k-grid-edit").attr("title", "Edit this record");
    },
...