- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
(有关背景,请参阅 this question 和 this question...)
给定:
grid = new Slick.Grid("#myGrid", data, columns, options);
grid.setSelectionModel(new Slick.RowSelectionModel());
grid.onSelectedRowsChanged.subscribe(function() {
row_ids = grid.getSelectedRows();
console.log(row_ids);
});
...当我选择一行(例如第 5 行)时,我得到的输出为
[4]
...这正是我所期望的。但是,除了该行之外,CMD+Click 或 SHIFT+Click -ing 另一行(例如,第 3 行)会给我一个输出
[2]
[4, 2]
...这不是我所期望的(我只期望 [4, 2]
)。只要所选行数为 > 1
,就会发生这种情况。因此,如果我继续选择另一行(例如第 17 行),我会得到这个
[16]
[4, 2, 16]
我在 console.log
语句上添加了一个断点,并验证了 onSelectedRowsChanged
被触发了两次:一次针对新单击的行,一次针对所有选定的行行。
这是为什么呢?我只希望它触发一次,为我提供所选行的完整数组。我将如何实现这个目标?或者我错过了什么?
最佳答案
问题(我后来发现)在于行选择模型Slick.RowSelectionModel()
。
具体来说,当选择该行时,handleActiveCellChange()
和 handleClick()
被调用,每个调用 setSelectedRanges()
,前者只设置为当前点击的行,后者设置为所有选中的行。
我通过在 init()
(在 slick.rowSelectionModel.js
内部)_grid.onActiveCellChanged
处理程序中注销并将调用移至内部来解决此问题handleClick()
:
function init(grid) {
_options = $.extend(true, {}, _defaults, options);
_grid = grid;
// _grid.onActiveCellChanged.subscribe(handleActiveCellChange);
_grid.onKeyDown.subscribe(handleKeyDown);
_grid.onClick.subscribe(handleClick);
}
...
function handleClick(e, data) {
...
if (!e.ctrlKey && !e.shiftKey && !e.metaKey) {
handleActiveCellChange(e, data);
return false;
}
...
}
我不知道这个问题是否已被作者在“v2 master”中修复,正如 @fbuchinger 所说,而且我知道这个修复是快速且肮脏的(这会破坏键盘导航和行之间的选择),但它有效并给出我的问题中描述的预期行为。由于我更关心点击是否正常工作而不是键盘导航,因此我现在坚持这样做。
谁知道更好的方法吗?
关于jquery - 当选择多于一行时,SlickGrid onSelectedRowsChange 会触发两次吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4737012/
如何在 slickgrid 中使某些行可编辑而某些行不可编辑? 最佳答案 设置 onBeforeEditCell 事件处理程序并返回 false 以防止单元格进入编辑模式。 关于slickgrid -
我有一个似乎无法解决的问题。我需要创建一个循环遍历数据集数组并为每个数据集创建一个独立的 slickgrids 的函数。问题是函数需要独立绑定(bind)到每个网格。例如: // this part
嗨,我已经尝试过这两个代码在 slickgrid 中插入新行。 代码1: data1.push({id: "12345", name: "secKey", field: "secKey", compl
我有一个 SlickGrid,用户可以在其中选择各种数据集。因此模式可以改变。因此,当用户选择新数据集时,我需要删除 SlickGrid 并重新开始,或者清除现有数据集。 什么是正确的方法?我应该删除
即使没有垂直滚动条,SlickGrid 始终在标题的最右侧保留一点空间。这个额外的空间看起来像是一个额外的列。我不想要这个额外的空间。 我没有找到任何暴露的 SlickGrid 组件的 API 来删除
我有惊人的SlickGrid配置为异步访问数据并将用户更改异步发布回服务器。一般而言,服务器可能会根据用户的更改修改一行的几个字段。因此,在更新行后,我希望 SlickGrid 仅刷新该行而不更改 V
是否可以将格式应用于 Slickgrid 中的特定行? 我知道您可以通过列应用格式规则 - 但我需要将格式规则应用于行。 即我的网格上有一个“总计”行 - 所以我想让该行加粗或从其他行中脱颖而出。 最
在 slickgrid 中,我可以使用 grid.SetSortColumn(colName,true/false) 设置排序列及其排序方向。 .这仅设置排序字形但不进行排序。有没有办法调用排序事件处
好的,让我更清楚地解释我的场景: 当一个单元格被编辑时,它会变得“脏”,我通过javascript向单元格添加一个CSS类以某种方式设置它的样式。 然后,如果用户对网格进行排序,样式就会丢失(我相信是
刚开始使用 SlickGrid,不确定我是否遗漏了什么,但是这个简单的代码似乎不起作用。它显示标题,但不显示行。 网格代码: var grid; var data = [ { ID: 1, VA
当用户按住鼠标按钮一段时间时,我试图在 Slick Grid 中弹出一个特殊菜单。菜单必须专门与该列相关,因此我需要以某种方式从该列中检索信息。由于在按住鼠标按钮期间会出现弹出窗口,因此我不能使用 o
我有一个 SlickGrid,其中包含不同数量的记录。应用程序代码将检索“ block ”中的数据,假设每个 block 有 25 条记录。 所以我的 SlickGrid 短时间内没有记录显示。然后前
我希望 slickgrid 根据最宽的内容或标题文本自动调整列的大小 - 以较宽者为准。简单来说,我希望它在调整列大小时模拟常规 HTML 表格的默认行为。我怎样才能在 slickgrid 中做到这一
我正在尝试在名为“图像”的列中插入图像,该列应仅包含图像。我正在从 Images 文件夹中获取图像 Dictionary.png,并在列初始化期间分配列中的路径。首先,图像不会显示在列单元格中,但占位
我注意到当发生验证错误时,用户会被锁定在该单元格中,直到错误得到解决。有没有办法让用户继续导航单元格? 这种方法对我有用 b/c 我在他们离开单元格时不提交,而是等到他们单击“保存”按钮。因此,当存在
我的一些列需要明确的宽度,而其他列应该填满所有可用空间。 有一个 forceFitColumns 选项,但它似乎忽略了我设置的任何显式宽度。我希望我的显式宽度得到尊重,并且隐式宽度能够被合理地估计。
使用固定标题行实现列级过滤器时,如何返回部分匹配的单元格? IE: 搜索词:“番茄” 退货:自动机、番茄等。 最佳答案 在示例中的 MyFilter 下替换此循环... for (var column
我需要禁用 slickgrid 水平滚动条。我只有一列并且有 forceFitColumns : true。 有可能吗? 谢谢 最佳答案 你可以用一点css来做到这一点。尝试将此添加到您的页面。
是否有一种可接受的方式来显示 slickgrid 表中的总行数。我看到有一个可以包含在我的页面上的寻呼机,但它带有用于分页的其他按钮/设置。 我正在使用没有分组的 DataView 对象。理想情况下,
我刚刚开始使用 slickgrid(作者 btw 的++) - 遇到了一些小问题 - 我想使用上下文编辑动态更新某些字段。编辑完成后,我希望将其发送到服务器,该服务器也应该验证发送的内容。如果出现错误
我是一名优秀的程序员,十分优秀!