하나의 선택 그리드가 필요합니다. 처음에는 선택 모델 구성이 포함되어 있지 않았으므로, the default입니다. 이 작업은 마우스 선택에 문제가 없지만 키를 SHIFT + END
으로 설정하면 모든 레코드가 선택됩니다 (또는 PAGE UP
, HOME
또는 END
과 비슷한 효과가 있음).키보드 멀티 셀렉트 방지 (격자 패널 용)
allowDeselect: true
으로 구성된 그리드를 원하지 않는 한, 선택한 레코드를 그리드를 다시로드하지 않고는 선택을 해제 할 수 없습니다.
이것이 ExtJS 문서에서 기본값에 관한 문제 였다고 생각하여 SINGLE
으로 그리드 패널을 명시 적으로 선택했지만 문제가 계속 발생했습니다.
나는 그 예를 몇 가지 그리드 here를 체크 아웃, 그들은 모두 같은 문제가 있습니다 - 단일 선택 그리드 마우스 다중 선택을 방지 할 수 있지만, Shift 키와 HOME
, END
, PAGE UP
또는 PAGE DOWN
로 multiselected 할 수 있습니다. 그리고 그것은 불가능합니다 레코드를 선택 취소합니다.
프레임 워크의 버그로 보입니다. 보고서를 작성하겠습니다. 그리드가 가장 일반적으로 사용되는 구성 요소 중 하나이므로이 문제에 대한 해결 방법이 있다고 가정했기 때문입니다.
필사적으로 필자도 역시 keypress
을 듣고 전역 적으로 이벤트를 중지했지만 그 작업도 수행하지 않았습니다. 예를 들어,이 콘솔에 기록되지만 이벤트 어쨌든 실행 :
Ext.getDoc().on('keypress', function(event, target) {
var key = event.getKey();
// do not allow multiple grid selection
if (event.shiftKey && (
key == event.PAGE_UP ||
key == event.PAGE_DOWN ||
key == event.HOME ||
key == event.END)) {
console.log('unsuccessfully trying to stop the event!');
event.stopEvent();
event.stopPropagation();
event.shiftKey = false;
return false;
}
});
편집 :
난 그냥과 다중 선택하지 않으enableKeyNav: false
모든 키보드 탐색을 해제하지 않으
키보드.
내가 질문을 더 명확해야합니다. 키보드로 탐색 할 수 있기를 원합니다 (키보드로 여러 항목을 선택하지 마십시오). – Geronimo
@Geronimo 답변을 업데이트합니다. – Vlad
Genius! 고맙습니다. – Geronimo