找回密码
 立即注册

QQ登录

只需一步,快速开始

醉汀雨笙

金牌服务用户

21

主题

93

帖子

336

积分

金牌服务用户

积分
336

微信认证勋章

[已处理] grid 手動刪除行

醉汀雨笙
金牌服务用户   /  发表于:2020-12-28 16:18  /   查看:3930  /  回复:9
1金币
gird 点击选中行,然后移除该行(不使用delete键),移除后,自动选中该行的下一行数据。

最佳答案

查看完整内容

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

9 个回复

倒序浏览
最佳答案
最佳答案
KevinChen讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2020-12-28 16:18:50
来自 8#
您好,问题已确认,这是您当前使用版本的bug,请下载最新版本的依赖包,升级产品即可解决。参考附件demo。最新版本下载地址:
https://www.grapecity.com/wijmo/download
(输入邮箱地址,可以收到下载地址)

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
KevinChen讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2020-12-28 18:13:09
2#
你好,删除行可以参考这篇示例:
https://www.grapecity.com/wijmo/ ... nlineEditing/purejs

更改选中行可以参考这篇示例:
https://www.grapecity.com/wijmo/ ... ion/Overview/purejs
回复 使用道具 举报
醉汀雨笙
金牌服务用户   /  发表于:2020-12-30 15:31:56
3#
表格有添加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讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2020-12-30 16:20:19
4#
问题已经收到,预计最晚明天给您回复验证结果
回复 使用道具 举报
KevinChen讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2020-12-31 10:58:08
5#
您好,选中整行需要设置选中模式为Row,如果执行多次选择可能会导致多次事件的触发,不过从您提供的代码里没发现这个问题。我按照您的逻辑改了一版代码,参考:

  1. import 'bootstrap.css';
  2. import '@grapecity/wijmo.styles/wijmo.css';
  3. import './styles.css';
  4. import * as wjGrid from '@grapecity/wijmo.grid';
  5. import * as wjCore from '@grapecity/wijmo';
  6. import * as wjInput from '@grapecity/wijmo.input';
  7. //
  8. document.readyState === 'complete' ? init() : window.onload = init;
  9. //
  10. function init() {
  11.     //
  12.     // create some random data
  13.     var countries = 'US,Germany,UK,Japan,Italy,Greece'.split(','), data = [];
  14.     for (var i = 0; i < countries.length; i++) {
  15.         data.push({
  16.             country: countries[i],
  17.             downloads: Math.round(Math.random() * 20000),
  18.             sales: Math.random() * 10000,
  19.             expenses: Math.random() * 5000
  20.         });
  21.     }
  22.     //
  23.     // show data in a grid
  24.     var currSel = document.getElementById('currSel');
  25.     var theGrid = new wjGrid.FlexGrid('#theGrid', {
  26.         alternatingRowStep: 0,
  27.         itemsSource: data,
  28.         selectionChanged: function (s, e) {
  29.             console.log("查看控制台,selectionChanged被触发了多少次?");
  30.             currSel.textContent = wjCore.format('({row},{col})-({row2},{col2})', theGrid.selection);
  31.         }
  32.     });
  33.     theGrid.onSelectionChanged(null); // initialize selection display
  34.     //
  35.     // pick selectionMode
  36.     var selectionMode = new wjInput.ComboBox('#selectionMode', {
  37.         itemsSource: 'None,Cell,CellRange,Row,RowRange,ListBox'.split(','),
  38.         text: 'CellRange',
  39.         textChanged: function () {
  40.             theGrid.selectionMode = wjCore.asEnum(selectionMode.selectedIndex, wjGrid.SelectionMode);
  41.         }
  42.     });
  43.     //
  44.     // select first four cells in the grid
  45.     document.getElementById('btnSelect').addEventListener('click', function () {
  46.         selectionMode.text = 'Row'; // 设置选中行规则
  47.         var view = theGrid.collectionView;//獲得當前視圖
  48.         view.remove(view.currentItem);//移除當前數據(這裡會自動觸發selection-changed 事件,並且觸發多次!)
  49.         theGrid.selection = new wjGrid.CellRange(0, 0); //選中行
  50.     });
  51.     //
  52.     // select rows 0, 2, and 4
  53.     document.getElementById('btnListSelect').addEventListener('click', function () {
  54.         selectionMode.text = 'ListBox';
  55.         theGrid.select(0, 0); // regular selection still works in listbox mode
  56.         [0, 2, 4].forEach(function (index) {
  57.             theGrid.rows[index].isSelected = true;
  58.         });
  59.     });
  60.     //
  61. }
复制代码


Demo地址:
https://www.grapecity.com/wijmo/ ... ion/Overview/purejs
回复 使用道具 举报
醉汀雨笙
金牌服务用户   /  发表于:2021-1-5 16:46:14
6#
本帖最后由 醉汀雨笙 于 2021-1-5 16:52 编辑

在你们的测试中,确实是不会被多次触发,但我自己写了一个简单的demo ,却会被多次触发,请查看一下被多次触发的原因。
回复 使用道具 举报
醉汀雨笙
金牌服务用户   /  发表于:2021-1-5 16:52:21
7#
这个是自己写的demo ,请帮忙查看一下问题所在。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
醉汀雨笙
金牌服务用户   /  发表于:2021-1-8 09:07:06
9#
已升級為最新版本,問題已解決!請結帖!
回复 使用道具 举报
KevinChen讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2021-1-8 09:11:08
10#
感谢反馈,已结帖~
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部