Nexacro - Grid에 CheckBox 추가 하기

Programming/Nexacro 2017.12.03 11:59 Posted by 파란크리스마스

출처 : 파트 IV. 컴포넌트 / 16. Grid 16.10그리드 행/열 합계 - 넥사크로플랫폼 ...
농부지기 :: Nexacro.Grid - all Checked 처리
농부지기 :: Nexacro.Grid - grid header

Dataset에 Checkbox의 체크값을 저장하기 위한 컬럼 추가

컬럼 추가 버튼 선택

chk 컬럼 추가

Grid의 컬럼 추가

[Insert] 버튼을 선택하여 Grid에 컬럼을 추가

컬럼헤더의 text 수정

컬럼의 expr, text 수정

  • expr : expr:chk=='Y'?'1':'0'
  • text : bind:chk

컬럼의 displaytype, edittype를 checkbox로 수정

  • displaytype : checkbox
  • edittype : checkbox

Grid의 Checkbox 컬럼의 체크 값 변경시 Dataset에 반영되도록 스크립트 작성

Nexacro 의 체크박스는 체크가 된 경우 1 / 체크가 되지 않은 경우 0의 Dataset의 체크값을 변경하기 위해서 스크립트 작성

this.Dataset00_oncolumnchanged = function(obj:Dataset, e:nexacro.DSColChangeEventInfo)
{
	// chk 컬럼인 경우
	if(e.columnid == "chk") {
		// 다른 이벤트가 동작하지 않도록 설정
		obj.enableevent = false;  //false can stop event temporarily  
		// 변경된 값이 1(체크가 된 경우)인경우
		if(e.newvalue == '1') {
			// 1인 경우 Dataset의 chk 값을 Y로 변경
			obj.setColumn(e.row,"chk",'Y');
		} else if(e.newvalue == '0') {
			// 0인 경우 Dataset의 chk 값을 N로 변경
			obj.setColumn(e.row,"chk",'N');  
		}
		// 다시 이벤트가 정상 동작하도록 설정
		obj.enableevent = true;
	}
}

체크값 전달을 위해서 SampleVO 클래스에 chk 변수 추가

public class SampleVO extends DefaultVO implements Serializable {
	
	private java.lang.String chk;

// ... 생략 ...

	public java.lang.String getChk() {
		return chk;
	}

	public void setChk(java.lang.String chk) {
		this.chk = chk;
	}


... 생략 ...

컬럼 헤더 클릭시 체크박스 전부 선택되도록 스크립트 작성

this.Grid00_onheadclick = function(obj:Grid, e:nexacro.GridClickEventInfo)
{
	// 첫 번째 컬럼인 경우
	if (e.col == 0) { 
		// Dataset의 레코드 개수 만큼 반복
		for(var nRow=0; nRow < this.Dataset00.getRowCount(); nRow++) {
			// chk 컬럼의 값을 Y로 변경
			this.Dataset00.setColumn(nRow, "chk", 'Y');
		}
	}
}

체크값 확인

package bizservice.nexa.sample.service;

public class EgovSampleServiceXpImpl extends AbstractServiceImpl implements EgovSampleServiceXp {

	 public void multiDataModifyService(List<Object> tranInfo,
				Map<String, Object> inVar, Map<String, List<Object>> inDataset,
				Map<String, Object> outVar, Map<String, Object> outDataset)
				throws Exception {
				
			//서비스단 개발
			List<Object> list = inDataset.get("input1");
			
			for (int i = 0; i < list.size(); i++) {
				Object obj = list.get(i);
				if (obj instanceof SampleVO){
					SampleVO row = (SampleVO)obj;
					System.out.println("pk.post_id = " + row.getPost_id() + "/체크여부 = " + row.getChk());
					// 추가 작업 구현
				}
			}

조회 SQL문 수정 (src\main\resources\egovframework\sqlmap\bizservice\sample\Sample.xml) - 불필요한 작업

	<!-- Sample resultObject -->
	<resultMap id="sample" class="bizservice.nexa.sample.vo.SampleVO">
		<result property="chk" column="CHK" />  <!-- chk 컬럼 추가 -->

<!-- 생략 -->
        
	<select id="sampleDAO.selectSampleVOList" parameterClass="searchVO" resultMap="sample">
		SELECT 'N' chk,
		       A.num AS num,
 		       A.TITLE AS TITLE, 
		       A.REG_ID AS REG_ID, 
 		       A.REG_DATE AS REG_DATE, 
		       A.POST_ID AS POST_ID, 
		       A.CONTENTS AS CONTENTS, 
		       A.COMMUNITY_ID AS COMMUNITY_ID,
		       A.COUNT AS COUNT
		  FROM XP_BOARD A
		 WHERE 1=1
	</select>

<!-- 생략 -->
저작자 표시
신고


 

티스토리 툴바