ng网格多选取消当前选择
ngGrid multiselect canceling current selection
我想配置ng-grid
以获得以下多选行为:
- 选择
单行将取消上一个选择
使用 Ctrl 或 Shift 进行选择将添加到当前选择(如例如,在Windows资源管理器中选择文件)
详:
- 如果我选择一行,则选择整行(启用行选择)
- 如果我选择按住 Ctrl 的行,则除了当前选定的行外,还会选择新行
- 如果我选择按住 Shift 范围被选中
- 如果我在没有按任何键的情况下选择一行,我希望选择该行而取消选择其他行
ng-grid
按预期工作,除了最后一步(单击行时取消选择其他行)
您可以将以下内容添加到网格的控制器中:
$scope.multiSelect = false;
// control/shift/meta keydown enables multiselect
$('.your-grid').keydown(function (e) {
if ((e.keyCode === 16 || e.keyCode === 17 || e.metaKey || e.keyCode === 224 || e.keyCode === 91 || e.keyCode === 93) && !$scope.multiSelect) {
$scope.multiSelect = true;
}
});
// keyup disables it
$('.your-grid').keyup(function (e) {
if (e.keyCode === 16 || e.keyCode === 17 || e.metaKey || e.keyCode === 224 || e.keyCode === 91 || e.keyCode === 93) {
$scope.multiSelect = false;
}
});
$scope.gridOptions.beforeSelectionChange = function () {
// if the shift/ctrl/meta keys aren't pressed, then each selection
// will clear all the previous ones
if (!$scope.multiSelect) {
for (var i = 0; i < $scope.gridOptions.data.length; ++i) {
$scope.gridOptions.selectRow(i, false);
}
}
return true;
};
您的视图如下所示:
<div class="your-grid" ng-grid="gridOptions">
所有不同键码值的原因是 Mac 的命令键的键码取决于浏览器。 你可以使用e.metaKey,但这并不适用于所有事情(我相信Mac的Chrome不适用)。 因此,为了安全起见,您可以检查SO帖子中描述的所有键代码值:如何通过JavaScript捕获Mac的命令键?
该解决方案的灵感来自:AngularJS在键向下更改多行选择ng-grid属性以及我目前找不到的另一个SO帖子。
相关文章:
- 通过在d3中单击来选择/取消选择
- 复选框选择/取消选择触发器第一次工作,但在随后的尝试中失败
- 选择/取消选择复选框,该复选框未按预期使用.coneast('table').find('tbo
- 在angular.js中选择取消选择树结构
- Javascript函数用于选择/取消选中radgrid标头模板中的所有复选框
- 一个变量,多个复选框选择/取消选择 jQuery
- 基于下拉选择的单选选择/取消选择
- 选择/取消选择花式树插件上所有具有相同ID的节点
- 选择2 取消选择所有值
- 使用 JQuery 多次选择取消选中复选框
- jQuery:需要知道在变更事件中选择/取消选择了哪个选项
- 带有选择/取消选择和汇总选项的表格
- 在按钮上切换类(选择/取消选择)
- 关闭浏览器选项卡时,如何在确认框中默认选择“取消”
- jqxTreeGrid如果我单击一行中的特定单元格,则禁用对该行的选择/取消选择
- 如何使用 JavaScript/jQuery 选择/取消选中复选框
- 即使用户选择“取消”,我如何保留FileDialog输入值?(ASP.Net/Javascript)
- 使用JQuery取消选择/取消聚集输入字段
- 如何将JavaScript应用于引导程序btn组以选择/取消选择子按钮元素
- 如何选择/取消选择所有克隆节点