jqGrid에서 rowspan 하는 방법 - cellattr, gridComplete

2025. 2. 25. 13:59·웹 개발/JavaScript

 

 

 

방법1. cellattr 사용

  • cellattr은 특정 셀(td)에 속성을 추가할 때 사용
  •  jqGrid가 테이블을 렌더링할 때 개별적으로 td를 생성하기 때문에 직접적으로 rowspan을 부여하는 것은 어려우나, colModel에 cellattr을 설정하여 동적으로 속성을 부여할 수 있다.

 

방법2. gridComplete 사용

  • 그리드가 렌더링된 후 실행되는 이벤트

 

 

 

 

병합 전

 

 

 

 

병합 후

 

 

 


 

 

 

 

 

 

cellattr - 2줄 병합하기

colModel: [
    {
        name: 'chk', align: 'center', hidden: false, width: 50, 
        edittype: 'checkbox', formatter: 'checkbox', 
        editoptions: { value: '1:0', defaultValue: '0' },
        cellattr: function (rowId, tv, rowObject, cm, rdata) {
            if (Number(rowId) % 2 == 0) {
                return 'rowspan="2"';
            } else {
                return 'style="display: none;"';  // 두 번째 행 숨김
            }
        }
    }
]

 

 

2의 배수 단위로 묶어서, 2의 배수의 첫 번째 로우만 rowspan 한다.

 

이후 나머지 row는 숨김 처리한다.

 

배수 단위로 묶지 않고 그냥 rowspan=2를 해버리면 셀의 데이터가 오른쪽으로 한 칸씩 밀려나게 된다.

 

 

 

 

 

 

cellattr - 3줄 병합하기

colModel: [
    {
        name: 'chk', align: 'center', hidden: false, width: 50, 
        edittype: 'checkbox', formatter: 'checkbox', 
        editoptions: { value: '1:0', defaultValue: '0' },
        cellattr: function (rowId, tv, rowObject, cm, rdata) {
            if (Number(rowId) % 3 == 1) {  // 1번째 행만 rowspan 적용
                return 'rowspan="3"';
            } else {
                return 'style="display: none;"';  // 나머지 두 개 행 숨김
            }
        }
    }
]

 

 

 

 

 

 

gridComplete - 2줄 병합하기

, gridComplete : function (){     
    var $dataRow = $("tr.ui-widget-content.jqgrow.ui-row-ltr");

    $dataRow.each(function (iRow) {
        var $tdElements = $(this).find("td");

        if (iRow % 2 == 0) {
            $tdElements.eq(0).attr("rowspan", "2");	// 첫 번째 row 체크박스
        } else {
            $tdElements.eq(0).hide();	// 나머지 체크박스 숨김
        }
    });
}

 

$("tr.ui-widget-content.jqgrow.ui-row-ltr")

  • jqGrid에서 실제 데이터를 표시하는 tr 태그(즉, 데이터 행들)를 선택
  • jqgrow 클래스는 jqGrid에서 각 데이터 행에 적용되는 기본 클래스

 

(this).find("td")는 현재 행(tr)의 모든 td(셀)를 가져온다.

 

 

 

 

반응형

'웹 개발 > JavaScript' 카테고리의 다른 글

JavaScript ES6 템플릿 리터럴과 JSP에서의 사용  (0) 2024.12.30
JavaScript 선언 되어 있는데 Uncaught ReferenceError: 함수 is not defined 에러 해결 방법  (0) 2024.11.21
'웹 개발/JavaScript' 카테고리의 다른 글
  • JavaScript ES6 템플릿 리터럴과 JSP에서의 사용
  • JavaScript 선언 되어 있는데 Uncaught ReferenceError: 함수 is not defined 에러 해결 방법
오은이
오은이
  • 오은이
    오은이 하우스
    오은이
  • 전체
    오늘
    어제
    • 분류 전체보기 (85)
      • 일기 (2)
      • Python (1)
      • Java (4)
      • CS (2)
      • 코딩테스트 (26)
        • 백준 (25)
        • 프로그래머스 (1)
      • 웹 개발 (18)
        • Spring (7)
        • JavaScript (3)
        • WebSquare (5)
        • React (3)
      • DB (5)
        • MySQL (4)
        • Oracle (1)
      • 서버&인프라 (18)
        • Server (5)
        • Cloud (12)
        • Linux (1)
      • 자격증 (9)
        • 정보처리기사 (2)
        • AICE (7)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • GitHub
  • 공지사항

  • 인기 글

  • 태그

    리액트
    dockerspring
    오블완
    react
    클라우드 배포
    EC2
    db
    Associate
    톰캣
    웹스퀘어
    docker
    Java
    백준자바
    SpringBoot
    MySQL
    AI
    자바
    AICE Associate
    Spring
    클라우드
    백준
    알고리즘
    티스토리챌린지
    docker배포
    머신러닝
    websquare
    tomcat
    cloud DB
    AICE
    Apache
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
오은이
jqGrid에서 rowspan 하는 방법 - cellattr, gridComplete
상단으로

티스토리툴바