편집 가능으로 표시된 열의 특정 셀에 대해 jqGrid에서 편집을 비활성화 할 수 있습니까?jqGrid - 편집 가능한 열의 특정 행만 편집하십시오.
내가 본 것부터 유일한 옵션은 "모든 셀을 편집 할 수 있습니다"또는 "셀을 편집 할 수 없습니다"입니다. 이 문제를 해결할 방법이 있습니까?
편집 가능으로 표시된 열의 특정 셀에 대해 jqGrid에서 편집을 비활성화 할 수 있습니까?jqGrid - 편집 가능한 열의 특정 행만 편집하십시오.
내가 본 것부터 유일한 옵션은 "모든 셀을 편집 할 수 있습니다"또는 "셀을 편집 할 수 없습니다"입니다. 이 문제를 해결할 방법이 있습니까?
행 편집을 위해 "인라인 편집"이라는 이름을 사용하는 것이 좋습니다. 이 방법의 가장 큰 장점은 매우 직관적이며 사용자입니다. 데모 페이지 http://trirand.com/blog/jqgrid/jqgrid.html에서 어떻게 작동하는지 확인할 수 있습니다. 이 데모 "행 편집"을 선택한 다음 왼쪽 트리 부분에서 "이벤트 사용"또는 "입력 유형"을 선택하십시오. 이 메서드를 사용하면 선택한 행을 이벤트 핸들 onSelectRow
또는 ondblClickRow
의 내부에서 편집 할 수 있는지 여부를 사용자 정의 검증을 구현할 수 있습니다. 편집을 허용하면 editRow
jqGrid 메서드를 호출합니다. 이 메서드는 편집 가능한 모든 열에 대한 입력 컨트롤을 만들고 사용자는 자연스럽게 행 값을 수정할 수 있습니다. 사용자가 "enter"키를 누르거나 "esc"키를 누르면 취소됩니다.
개인적으로 ondblClickRow
이벤트 처리기 내부에서 editRow
메서드 호출을 구현하는 것을 선호합니다. 따라서 사용자는 평소와 같이 행을 계속 선택하고 행 편집에 대해 두 번 클릭 할 수 있습니다. 의사 코드는 다음과 같이 표시됩니다.
var lastSel = -1;
var isRowEditable = function (id) {
// implement your criteria here
return true;
};
var grid = jQuery('#list').jqGrid({
// ...
ondblClickRow: function(id, ri, ci) {
if (isRowEditable(id)) {
// edit the row and save it on press "enter" key
grid.jqGrid('editRow',id,true);
}
},
onSelectRow: function(id) {
if (id && id !== lastSel) {
// cancel editing of the previous selected row if it was in editing state.
// jqGrid hold intern savedRow array inside of jqGrid object,
// so it is safe to call restoreRow method with any id parameter
// if jqGrid not in editing state
grid.jqGrid('restoreRow',lastSel);
lastSel = id;
}
},
pager: '#pager'
}).jqGrid('navGrid','#pager',{edit:false});
논리적으로 할 수 있습니다. 일부 셀을 편집 할 수 있고 일부는 편집 할 수없는 셀에 대한 기준이 있어야합니다.
나는 그것을 현명하게 구현했다.
jqgrid에 대한 XML을 만들 때 각 행에 id를 지정하십시오.
이러한 ID를 기반으로 jqgrid 메소드를 사용하여 해당 행의 셀을 편집 가능 또는 편집 불가능으로 만들 수 있습니다.
beforeEditCell: function(rowid, cellname, value, iRow, iCol) {
// here identify row based on rowid
// if the row should not be editable than simply make the cells noneditable using
editCell(iRow, iCol, false);
jQuery(gridid).jqGrid("restoreCell",iRow,iCol);
}
당신은 더 자신을 구현할 수 아래
는 beforeEditCell 방법입니다.희망 사항은 도움이 될 것입니다. :)
자세한 내용을 입력 해 주셔서 감사합니다. 합리적인 해결책처럼 들립니다. –
@Oleg : 여전히 행의 인라인 및 양식 편집이 가능합니다. 비활성화 된 행의 인라인 및 양식 편집도 방지하는 방법은 무엇입니까? – Andrus