Telerik Kendoo React Grid - 内部网格用错误的元数据冒泡事件

问题描述 投票:0回答:1

重现错误的代码沙箱:https://codesandbox.io/s/pense-galileo-ksx7nr(您需要单击展开一行,然后您将有一个内部网格,尝试单击里面的项目看看外部网格选择如何变化)

我有一个网格,在详细信息行中我有另一个网格(detailRow={MyCoponentWithAnotherGrid})。当我单击内部网格中的行时,外部网格也会触发 onSelectionChange 事件。这是正常的,但在该外部网格的事件中,我有信息表明该事件是为外部网格触发的,但事件的 endRowIndex 属性显示单击的项目具有来自内部网格的索引。因此,当我使用

getSelectedState({
          event,
          selectedState: selectedState,
          dataItemKey: DATA_ITEM_KEY,
       });

它返回给我新的选择,该选择选择与内部网格中相同索引下的项目...但此事件位于外部网格中。所以如果我有一个像这样的网格:

- Item 1
  - Item 1.1
  - Item 1.2
-Item 2

然后我单击“Item 1.2”,然后我的外部网格选择项目“Item 2”。这是一个错误吗?我可以以某种方式阻止内部网格的事件冒泡作为解决方法吗?

reactjs telerik-grid
1个回答
0
投票

我在 Telerik 论坛上收到了如何检查事件是否来自内部网格的答案,因此我将其粘贴在这里:

const onSelectionChange = (event) => {    
let targetEl = event.nativeEvent.target;
let isDetail = false;
while (targetEl.tagName != 'BODY') {
  if (targetEl.tagName == 'TR') {
    if (targetEl.className.indexOf('k-detail-row') >= 0) {
      isDetail = true;
      break;
    }
  }
  targetEl = targetEl.parentNode;
}
if (!isDetail) {
...
}
© www.soinside.com 2019 - 2024. All rights reserved.