다중 선택 및 인라인 편집 기능을 갖춘 jqGrid 인스턴스가 있습니다. beforeSelectRow
이벤트에 몇 가지 코드를 작성하여 ctrl-key 및 shift-key를 사용하여 여러 선택을 수행 할 수 있습니다. 핫키를 누르지 않고도 단일 선택을 할 수 있습니다. 인라인 편집을 사용하려면 행을 두 번 선택하면 editRow
으로 전화 할 것입니다. jqGrid 편집 가능한 행의 입력 필드에 초점을 맞추면 왜 행이 '선택 취소'됩니까?
- 편집 가능한 행의 모든 필드의 입력 요소에 클릭이 행이 될 것 : 그러나, 나는이 이상한 문제에 들어가 편집 모드로 전환하면 대상 행에
restoreRow
이 제대로 호출 되더라도 이전에 선택한 행을 복원 할 수 없습니다.
--EDITED--
, 행
편집 모드
초점을 입력 상자에 들어가 다시 행을 선택을 선택 행을 선택 취소합니다
선택 & 편집 다른 행은, 이전 행 복원 할 수 없습니다.
- 코드 - 코드에서
beforeSelectRow: function (rowid, e) {
var $this = $(this);
var url_for_save_edit = this.p.editurl;
var last_selected_row = this.p.selrow;
var cur_selected_rows = $this.data(key_selected_rows);
if (true == e.shiftKey) {
if (rowid != last_selected) {
var min = parseInt((rowid < last_selected_row) ? rowid : last_selected_row);
var max = parseInt((rowid > last_selected_row) ? rowid : last_selected_row);
for (var i = min + 1; i < max; i++) {
$this.jqGrid(method_setSelection, i, false);
}
}
} else if (false == e.ctrlKey) {
$this.resetSelection();
if (!$.string.isNullOrEmpty(url_for_save_edit)) {
if (!$.isNull(cur_selected_rows) && (cur_selected_rows.length <= 1) && (rowid == last_selected_row)) {
var curr_edit_row = $this.data(key_curr_edit_row);
console.log('>>>>> curr selected rows = ', cur_selected_rows, ', last selected row = ', last_selected_row, 'curr editing row = ', curr_edit_row, ', to be editable row: ', rowid);
if (rowid != curr_edit_row) {
if (!$.isNull(curr_edit_row)) {
console.log('>>>>> restoring row ', curr_edit_row);
$this.jqGrid('restoreRow', curr_edit_row, null);
}
console.log('>>>>> set row as editable: ', rowid);
$this.jqGrid('editRow', rowid, false, null, null, null, null, null, null, null);
$this.data(key_curr_edit_row, rowid);
}
}
}
}
return true;
}
안녕하세요 올렉. jqGrid 문서 만 따랐기 때문에 소스 코드에 익숙하지 않습니다.또한 DOM에 직접 액세스하는 대신 API를 사용하고 싶습니다. 문제는 정말 이상합니다. 일단 삽입 된 입력 상자에 초점이 맞춰지면, 원래 선택한 행은 '선택 해제'됩니다. 너는 어떤 생각을 가지고 있니? GitHub에서 jqGrid 소스 코드를 추적했지만 찾지 못했습니다. –
@William Choi : 죄송 합니다만'this.p.selrow'를 직접 사용하십시오. 왜'this.p.selarrrow'를 쓰지 않고 대신'$ this.data (key_selected_rows)'를 사용합니까? undefined'$ .string.isNullOrEmpty'를 사용합니다. if (! $. string.isNullOrEmpty (url_for_save_edit))'는 단지'if (url_for_save_edit)'여야합니다. 'this.rows'의 사용법은'this.p'처럼 간단하지만 모든 표준 **에 해당하므로'this.p'로 훨씬 더 확실하게 사용할 수 있습니다. 'this.rows'는 jqGrid의 일부가 아니며 DOM 표준의 일부입니다. jqGrid에는 기존 DOM 속성에 대한 API가 없습니다. 나는 당신의 코드를 테스트하고 더 많이 쓰려고 노력할 것이다. – Oleg
'$ .string.isNullOrEmpty'는 그냥 내 인생을 단순화하기위한 util 메서드입니다. –