그리드 사용중 헤더 통합, 하단에 합계를 노출해야할 업무가 있다.

features에 ftype을 summary로 해서 통계 기능을 이용하면 된다.

기본적으로 sum, max, min, average, count를 제공한다.


//commify는 0,000 포맷으로 변환해주는 펑션
function summaryRenderer(value, summaryData, dataIndex) {
	if(Number(value) > 0) value = commify(Number(value));
	return value+ ' 명';
}

grid = Ext.create('Ext.grid.Panel', {
	store : store,
	stateful : false,
	collapsible : false,
	multiSelect : false,
	stateId : 'stateGrid',
	disableSelection : true,
	loadMask : true,
	features: [{
		ftype: 'summary'
	}],
	columns : Ext.create('Ext.grid.header.Container', {
		items : [
			{ 
				text : '단위지역',	width : 140,	align :  'center',	sortable : false,	dataIndex : 'UNIT_AREA',
				summaryType: 'sum',
				summaryRenderer: function(value, summaryData, dataIndex) {
					return '합계';
				}
			},
			{ 
				text : '인구수',		width : 130,	align : 'center',	sortable : false,	dataIndex : 'TPPCN',
				// 컬럼 값
					renderer: function(value, metaData, record, rowIdx, colIdx, store, view){
					return value;
					},
					xtype: 'numbercolumn', format:'0,000',
					summaryType: 'sum',
					summaryRenderer: summaryRenderer
				},
				{ text : '성별',
					columns: [
							{ 
								text     : '남성',	width    : 90, 	align : 'center',	sortable : false, 	dataIndex: 'MPPCN',
								xtype: 'numbercolumn', format:'0,000',
								summaryType: 'sum',
								summaryRenderer: summaryRenderer
							}, 
							{ 
								text     : '여성', 	width    : 90, 	align : 'center',	sortable : false, 	dataIndex: 'FPPCN',
								xtype: 'numbercolumn', format:'0,000',
								summaryType: 'sum',
								summaryRenderer: summaryRenderer
							}, 
						]
					}
				], 
		sortable : false
	}),
	listeners: {
		itemdblclick: {
			fn: function(grid, selRow, selHtml){
				// your codes...
			}
		}
	}
	autoHeight: true,
	width : 1025,
	renderTo : 'grid',
	viewConfig : {
		stripeRows : true,
		enableTextSelection : false
	}
});







'Web > extjs4' 카테고리의 다른 글

Ext.create() and Ext.widget() 의 차이점...  (0) 2013.07.26
Ext.Ajax  (0) 2013.07.22
extjs grid 헤더 통합 및 하단 합계 추가.  (0) 2012.04.27
extjs grid dataStore onLoad 처리.  (0) 2012.04.24
extjs grid double click event  (0) 2012.04.23
extjs grid 헤더와 컬럼 따로 정렬하기  (0) 2012.04.23
extjs grid에서 dataStore를 모두 불러왔을때 이벤트 처리를 해야할 경우가 생겼다.

이전의 삽질을 바탕으로 listener를 먼저 생각했고, 이벤트는 onLoad, afterLoad 등 하다가 단순하게 load를 하니 작동한다.


		// create the Data Store
		    store = Ext.create('Ext.data.Store', {
		        pageSize: 20,
		        model: 'QnA',
		        //remoteSort: true,
		        proxy: new Ext.data.HttpProxy({ 
		            extraParams : jQuery('form[name="searchForm"]').formParams(),
		            url: REMOTE_URL, 
		            reader: new Ext.data.JsonReader(
				{ root: 'datas', totalProperty: 'totalCount'}
			)}
		        ),
		        listeners: {
		            load: function(dataStore, rows, bool) {
 		                console.log(dataStore);
 		                console.log(rows);
 		                console.log(bool);
		            },
		            scope: this
		        }
		    });






'Web > extjs4' 카테고리의 다른 글

Ext.create() and Ext.widget() 의 차이점...  (0) 2013.07.26
Ext.Ajax  (0) 2013.07.22
extjs grid 헤더 통합 및 하단 합계 추가.  (0) 2012.04.27
extjs grid dataStore onLoad 처리.  (0) 2012.04.24
extjs grid double click event  (0) 2012.04.23
extjs grid 헤더와 컬럼 따로 정렬하기  (0) 2012.04.23

grid에서 컬럼을 클릭, 더블클릭 하는 이벤트는 리스너로 등록을 해주어야 한다. 플렉스와 비슷하여 이해하는데 많은 시간이 걸리지 않으나, 이벤트 타입을 찾는데 시간을 너무 소비 했다. 이벤트 타입은 extjs의 API Docs를 통해 확인할 수 있으며, 자세한 정보는 Ext.view.View의 event 항목을 보면된다.
// 그리드 생성
grid = Ext.create('Ext.grid.Panel', {
	store : store,
	stateful : true,
	collapsible : true,
	stateId : 'stateGrid',
	columns : [
		/*
		* 헤더와 컬럼의 정렬이 동일할 경우 align 만 사용
		* 헤더 정렬  ->  style: 'text-align:center'
		* 컬럼 정렬  ->	 align:' { left || center || right }' 
		*/
		  { text : '직원명', 	width : 150,	sortable : false,	dataIndex : 'NAME',	style: 'text-align:center', 	align:'left'}
		, { text : '소속사무소',	width : 150,	sortable : false,	dataIndex : 'BRNM',	style: 'text-align:center', 	align:'left'}
		],
		listeners: {
 		        itemdblclick: {
 		       	/**
 			 * @grid		그리드 오브젝트
 			 * @selRow		선택한 셀의 오브젝트
 			 * @selHtml		선택한 셀의  html
 			 * 
 			 * 기본적으로 Ext.define에서 idProperty로 선언한 field가 internalId로 설정된다.  						 		 * 그 외 데이터는 selRow.data.{field}로 접근할 수 있다.
 			 */
 		            fn: function(grid, selRow, selHtml){
 		  	// your codes
 		            	}
 		        }
 		}
		autoHeight:true,
		width : 1025,
		title : '사용자 목록',
		renderTo : 'grid',
		viewConfig : {
			stripeRows : true,
			enableTextSelection : false
		}







'Web > extjs4' 카테고리의 다른 글

Ext.create() and Ext.widget() 의 차이점...  (0) 2013.07.26
Ext.Ajax  (0) 2013.07.22
extjs grid 헤더 통합 및 하단 합계 추가.  (0) 2012.04.27
extjs grid dataStore onLoad 처리.  (0) 2012.04.24
extjs grid double click event  (0) 2012.04.23
extjs grid 헤더와 컬럼 따로 정렬하기  (0) 2012.04.23
기본적으로 extjs4에서는 헤더와 컬럼은 동일하게 정렬된다.
이를 개별로 지정하는 속성은 따로 없고, 스타일로 지정을 해 주어야 한다.

자세한 것은 바로 코드로 확인할 수 있다.

// 그리드 생성
grid = Ext.create('Ext.grid.Panel', 
{	store : store,
	stateful : true,
	collapsible : true,
	stateId : 'stateGrid',	columns : [
		/*
		* 헤더와 컬럼의 정렬이 동일할 경우 align 만 사용
		* 헤더 정렬  ->  style: 'text-align:center'
		* 컬럼 정렬  ->	 align:' { left || center || right }'
 		*/
		  { text : '직원명', 	width : 150,	sortable : false,	dataIndex : 'NAME',	style: 'text-align:center', 	align:'left'}	
		  , { text : '소속사무소',	width : 150,	sortable : false,	dataIndex : 'BRNM',	style: 'text-align:center', 	align:'left'}	
		],
		autoHeight:true,
		width : 1025,
		title : '사용자 목록',
		renderTo : 'grid',
		viewConfig : {
			stripeRows : true,
			enableTextSelection : false
		}









'Web > extjs4' 카테고리의 다른 글

Ext.create() and Ext.widget() 의 차이점...  (0) 2013.07.26
Ext.Ajax  (0) 2013.07.22
extjs grid 헤더 통합 및 하단 합계 추가.  (0) 2012.04.27
extjs grid dataStore onLoad 처리.  (0) 2012.04.24
extjs grid double click event  (0) 2012.04.23
extjs grid 헤더와 컬럼 따로 정렬하기  (0) 2012.04.23

+ Recent posts