ax5ui grid 헤더 표시 문제


(최찬흠) #1

ax5ui grid에서 그리드를 생성하고 나서 setData 메소드를 실행하지 않으면 헤더가 아래처럼 보이지않는데요.
image

이 현상이 의도한 바인지 버그인지 궁금합니다.

데이터를 조회하지 않아도 헤더가 보이도록하기 위해서 그리드 생성 후 setData메소드를 실행하도록 소스를 수정했는데, 이상하게도 바로 실행하면 헤더가 안보이고 setTimeout을 통해 0.001초라도 늦게 실행해야 아래처럼 헤더가 보였습니다.
image

그리드 생성 후 데이터를 조회하지 않아도 헤더가 바로 보이게 하려면 어떻게 처리하는 것이 좋을까요?

감사합니다.


(Thomas) #2

소스코드를 올려주셔야 확인이 되겠어요.~


(최찬흠) #3

메세지로 보내드렸습니다.!


(Thomas) #4

위 소스에서 확인 되듯이. 그리드의 컬럼과 옵션을 정의하는 방법은 new 할때와 setConfig할 때 이고
데이터를 정의하는 부분과 분리 할 수 있습니다.
setConfig가 되지 않아서 생기는 문제가 아닐까 생각됩니다.


(최찬흠) #5

답변 감사드립니다. 제가 메세지로 보내드린 소스에 new와 setconfig 부분이 빠져있었네요.
제가 보내드린 소스중에 AX5GRID.createGridView라는 함수가 있는데,
아래와 같이 new와 setConfig는 createGridView함수에서 정의하고 있습니다.

createGridView : function(container, columns, options){
	
	if (UTIL.isArray(options.actionFields)) { // 배열
		AX5GRID.setActionColumn(columns, options.actionFields); // action 컬럼
	}
    if (UTIL.isArray(options.editableFields)) { // 배열
    	AX5GRID.setEditableColumn(columns, options.editableFields); // editable 컬럼
    }
    
	var gridId = container.contentId;
    
    var gridView = new ax5.ui.grid();
    gridView.setConfig({
        target: $('[data-ax5grid="' + gridId + '"]'),
        showLineNumber: true,
        showRowSelector: true,
        multipleSelect: true,
        lineNumberColumnWidth: 40,
        rowSelectorColumnWidth: 27,
        page: {
            display: false
        },
        header: {
        	columnHeight: 35,
        	align: "center"
        },
        body: {
            onClick: options.clicked
        },
        columns: columns
    });
    
    $('[data-ax5grid-container=root]', container).css('width', '100%');

    gridView.$$Custom$$ = {}; // 커스텀 설정.
    
    if (UTIL.isFunction(options.itemCountPropertyBinding)) {
        gridView.$$Custom$$.itemCountPropertyBinding = options.itemCountPropertyBinding; // 그리드의 커스텀 함수로 만듬.
    }	    
    
    AX5GRID.addResizeEvent(gridView, container);
    
    return gridView;
},

따라서 그리드를 정상적으로 new하고 setConfig를 했는데 헤더가 보이지 않고 setData 함수를 실행한 이후에만 헤더가 보여서 setConfig 후에 바로 빈 배열을 setData하도록 처리했는데, 헤더가 보이지 않고 아래와 같이 setTimeout함수를 통해 delay를 줘야 헤더가 보이는 것이 이상해서 질문드렸던 것입니다.

        setTimeout(function(){
        	AX5GRID.setRows(me.gridMenuFuncView, []);
        }, 1);

감사합니다.