최초의
많은 감사합니다. 하나는 그리드 셀 안에 체크 박스를 포함 custom formatter를 사용할 수 있습니다
formatter: function (cellvalue) {
return "<input type='checkbox' class='itmchk' ><strong>" +
$.jgrid.htmlEncode(cellvalue) + "</strong>";
}
는 그리드의 beforeSelectRow
콜백을 사용할 수있는 체크 박스의 체크/선택 취소를 제어 할 수 있습니다. jqGrid는 내부적으로 그리드 본문에 click
이벤트를 바인딩합니다. 따라서 이벤트 핸들러는 event bubbling 요소에 직접 존재하지 않습니다. 그것은 하나의 beforeSelectRow
콜백 내부의 모든 체크 박스의 체크/체크 해제를 잡을 수 있습니다. beforeSelectRow
안에 먼저 제어하려는 확인란을 클릭했는지 테스트해야합니다.
콜백 beforeSelectRow
에는 rowid
과 event object의 두 매개 변수가 있습니다. 이벤트 개체의 target
속성은 사용자가 클릭 한 DOM 요소입니다. 이러한 모든 체크 박스에 사용자 정의 itmchk
클래스를 추가하기 때문에 클릭 된 요소의 클래스를 검증하기에 충분합니다.
다음 문제는 getNodeChildren과 같은 TreeGrid와 함께 작동하는 많은 jqGrid 메소드가 record
을 입력 매개 변수로 가지고 있지만 대신 rowid
만 가질 수 있다는 것입니다. jqGrid는로드 된 항목을 로컬에 저장합니다. 따라서 record
을 rowid
에서 가져 오는 가장 간단한 방법은 getLocalRow
방법을 사용하는 것입니다.
beforeSelectRow
콜백의 코드는 다음이 될 수있는 결과 :
beforeSelectRow: function (rowid, e) {
var $this = $(this),
isLeafName = $this.jqGrid("getGridParam", "treeReader").leaf_field,
localIdName = $this.jqGrid("getGridParam", "localReader").id,
localData,
state,
setChechedStateOfChildrenItems = function (children) {
$.each(children, function() {
$("#" + this[localIdName] + " input.itmchk").prop("checked", state);
if (!this[isLeafName]) {
setChechedStateOfChildrenItems($this.jqGrid("getNodeChildren", this));
}
});
};
if (e.target.nodeName === "INPUT" && $(e.target).hasClass("itmchk")) {
state = $(e.target).prop("checked");
localData = $this.jqGrid("getLocalRow", rowid);
setChechedStateOfChildrenItems($this.jqGrid("getNodeChildren", localData), state);
}
}
그것은 아이들의 체크 박스가 체크 될 것이라고 언급하는 것이 중요합니다/단지 이전에로드 된 항목에 체크되지 않은. 한 번에 그리드의 데이터를로드하고 loaded: true
속성을 사용하기 때문에 문제가되지 않습니다.
해당 demo은 위의 코드가 실제로 작동 함을 보여줍니다. 이전 질문에 답하여 만든 데모를 수정 한 것입니다.
jqGrid에 대해 많은 것을 알고 계시 며 확실히 마스터님께 도움을 주신 것에 대해 진심으로 감사드립니다. 새로운 사용자와 공유 한 모든 것에 대해 다시 한 번 감사드립니다.나는 더 이상 당신을 괴롭히지 않을 것입니다,하지만 위의 질문에 따라, 나는 데이터베이스 레벨 값에 따라 때로는 체크 박스를 대체하는 라디오 버튼에 대해 말하지 않았습니다. 포맷터에서 다른 셀의 값을 테스트 할 수있는 방법이 있나요? 그래서 셀에 추가 할 라디오 버튼이나 체크 박스를 선택할 수 있습니까? 초급 단계라고 생각하지만 어떻게 할 수 있는지 알지 못합니다. 도와 줘서 고마워. JiheL – JiheL
제 의견에 시간을 낭비하지 말고, 데이터베이스의 레벨 값에 따라 라디오 버튼으로 확인란을 대체 할 해결책을 찾았습니다. 친절한 인내심에 다시 한번 많은 감사드립니다. 좋은 하루 보내십시오 JheheL – JiheL
@ user2132268 : 천만에! – Oleg