Как узнать, в какой части таблицы находится текущая редактируемая ячейка при использовании заблокированных и разблокированных столбцов? - PullRequest
0 голосов
/ 24 октября 2019

Я использую заблокированные и разблокированные столбцы в сетке кендо, и у меня происходит событие редактирования, когда я нажимаю на ячейку. Проблема в том, что сетка разделена на две (из-за заблокированных и разблокированных столбцов), я не могу понять, в какой таблице редактируется текущая ячейка редактирования ...

IE: я нажимаю наячейка в столбце Имя, ее индекс равен 0, а затем, если я щелкну ячейку в столбце пола, ее индекс будет равен 0.

В сетке, в которой я работаю, столбцов больше заблокированных и разблокированных, чем этот.

$("#grid").kendoGrid({
  columns: [{
      field: "name",
      locked: true,
      width: 200
    },
    {
      field: "gender",
      width: 100
    },
    {
      field: "city",
      width: 100
    }
  ],
  dataSource: {
    data: [{
        id: 1,
        name: "Jane Doe",
        gender: "female",
        city: "Sofia"
      },
      {
        id: 2,
        name: "John Smith",
        gender: "male",
        city: "London"
      },
      {
        id: 3,
        name: "James Jones",
        gender: "male",
        city: "New York"
      },
      {
        id: 4,
        name: "Mary Johnson",
        gender: "female",
        city: "Paris"
      },
      {
        id: 5,
        name: "Robert Lee",
        gender: "male",
        city: "Berlin"
      }
    ],
    schema: {
      model: {
        id: "id",
        fields: {
          name: {
            type: "string",
            editable: true
          },
          gender: {
            type: "string",
            editable: true
          },
          city: {
            type: "string",
            editable: true
          }
        }
      }
    }
  },
  navigatable: true,
  selectable: "row",
  editable: {
    mode: "incell",
    confirmation: false
  },
  edit: function(e) {
    console.log(e.sender.current().index());
  },
  change: function(e) {

  }
});
<link rel="stylesheet" href="https://kendo.cdn.telerik.com/2019.3.1023/styles/kendo.common.min.css">
<link rel="stylesheet" href="https://kendo.cdn.telerik.com/2019.3.1023/styles/kendo.rtl.min.css">
<link rel="stylesheet" href="https://kendo.cdn.telerik.com/2019.3.1023/styles/kendo.default.min.css">
<link rel="stylesheet" href="https://kendo.cdn.telerik.com/2019.3.1023/styles/kendo.mobile.all.min.css">

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://kendo.cdn.telerik.com/2019.3.1023/js/kendo.all.min.js"></script>

<div id="grid" style="width:400px"></div>

1 Ответ

0 голосов
/ 28 октября 2019

Вы можете попробовать метод jQuery .is () и сравнить таблицу текущей ячейки с элементом lockedTable сетки.

См. jQuery - как проверить, совпадают ли два элемента?

edit: function(e) {
    console.log(e.sender.current().index());
    let isLocked = e.sender.current().closest("table").is(e.sender.lockedTable);
    console.log("Is Locked Portion: ", isLocked);    
}

Пример

...