醉汀雨笙 发表于 2020-12-28 16:18:49

grid 手動刪除行

gird 点击选中行,然后移除该行(不使用delete键),移除后,自动选中该行的下一行数据。

KevinChen 发表于 2020-12-28 16:18:50

您好,问题已确认,这是您当前使用版本的bug,请下载最新版本的依赖包,升级产品即可解决。参考附件demo。最新版本下载地址:
https://www.grapecity.com/wijmo/download
(输入邮箱地址,可以收到下载地址)

KevinChen 发表于 2020-12-28 18:13:09

你好,删除行可以参考这篇示例:
https://www.grapecity.com/wijmo/demos/Grid/Editing/InlineEditing/purejs

更改选中行可以参考这篇示例:
https://www.grapecity.com/wijmo/demos/Grid/Selection/Overview/purejs

醉汀雨笙 发表于 2020-12-30 15:31:56

表格有添加selection-changed 事件,發現移除當前選中的行,匯自動觸發selection-changed 事件
1.如果移除表格第一行,selection-changed 會被觸發表格行數的次數,並且表格自動選擇最後一樣數據。
2.如果移除中間或者最後一行,selection-changed 事件會被觸發一次


我所要的效果是,移除該行,自動選擇該行的下一行數據,觸發一次selection-changed 事件。

嘗試做法:
var view = grid.collectionView;//獲得當前視圖
view.remove(view.currentItem);//移除當前數據(這裡會自動觸發selection-changed 事件,並且觸發多次!)
grid.selection = new wijmo.grid.CellRange(index, index, index, index); //選中行

Richard.Ma 发表于 2020-12-30 16:20:19

问题已经收到,预计最晚明天给您回复验证结果

KevinChen 发表于 2020-12-31 10:58:08

您好,选中整行需要设置选中模式为Row,如果执行多次选择可能会导致多次事件的触发,不过从您提供的代码里没发现这个问题。我按照您的逻辑改了一版代码,参考:

import 'bootstrap.css';
import '@grapecity/wijmo.styles/wijmo.css';
import './styles.css';
import * as wjGrid from '@grapecity/wijmo.grid';
import * as wjCore from '@grapecity/wijmo';
import * as wjInput from '@grapecity/wijmo.input';
//
document.readyState === 'complete' ? init() : window.onload = init;
//
function init() {
    //
    // create some random data
    var countries = 'US,Germany,UK,Japan,Italy,Greece'.split(','), data = [];
    for (var i = 0; i < countries.length; i++) {
      data.push({
            country: countries,
            downloads: Math.round(Math.random() * 20000),
            sales: Math.random() * 10000,
            expenses: Math.random() * 5000
      });
    }
    //
    // show data in a grid
    var currSel = document.getElementById('currSel');
    var theGrid = new wjGrid.FlexGrid('#theGrid', {
      alternatingRowStep: 0,
      itemsSource: data,
      selectionChanged: function (s, e) {
            console.log("查看控制台,selectionChanged被触发了多少次?");
            currSel.textContent = wjCore.format('({row},{col})-({row2},{col2})', theGrid.selection);
      }
    });
    theGrid.onSelectionChanged(null); // initialize selection display
    //
    // pick selectionMode
    var selectionMode = new wjInput.ComboBox('#selectionMode', {
      itemsSource: 'None,Cell,CellRange,Row,RowRange,ListBox'.split(','),
      text: 'CellRange',
      textChanged: function () {
            theGrid.selectionMode = wjCore.asEnum(selectionMode.selectedIndex, wjGrid.SelectionMode);
      }
    });
    //
    // select first four cells in the grid
    document.getElementById('btnSelect').addEventListener('click', function () {
      selectionMode.text = 'Row'; // 设置选中行规则
      var view = theGrid.collectionView;//獲得當前視圖
      view.remove(view.currentItem);//移除當前數據(這裡會自動觸發selection-changed 事件,並且觸發多次!)
      theGrid.selection = new wjGrid.CellRange(0, 0); //選中行
    });
    //
    // select rows 0, 2, and 4
    document.getElementById('btnListSelect').addEventListener('click', function () {
      selectionMode.text = 'ListBox';
      theGrid.select(0, 0); // regular selection still works in listbox mode
      .forEach(function (index) {
            theGrid.rows.isSelected = true;
      });
    });
    //
}


Demo地址:
https://www.grapecity.com/wijmo/demos/Grid/Selection/Overview/purejs

醉汀雨笙 发表于 2021-1-5 16:46:14

本帖最后由 醉汀雨笙 于 2021-1-5 16:52 编辑

在你们的测试中,确实是不会被多次触发,但我自己写了一个简单的demo ,却会被多次触发,请查看一下被多次触发的原因。

醉汀雨笙 发表于 2021-1-5 16:52:21

这个是自己写的demo ,请帮忙查看一下问题所在。

醉汀雨笙 发表于 2021-1-8 09:07:06

已升級為最新版本,問題已解決!請結帖!

KevinChen 发表于 2021-1-8 09:11:08

感谢反馈,已结帖~
页: [1]
查看完整版本: grid 手動刪除行