[ Nexacro.Grid - scrollbar 관리 ]


1. Grid Scrollbar 강제 이동




2. Grid Scrollbar 고정


'Nexacro-Grid > 자체속성' 카테고리의 다른 글

Naxacro Grid-cell 한번클릭 시 바로 focus위치  (0) 2019.04.24
Nexacro.Grid Scroll 처리  (0) 2017.06.22
Posted by 농부지기
,

[ Nexacro.Grid - 특정 셀에 여러줄일 경우 ]



'Nexacro-Grid > cell 속성 관련' 카테고리의 다른 글

Nexacro Grid - Cell에 image보여주기  (0) 2019.04.12
Nexacro.Grid-Cell Merge  (0) 2017.03.30
Nexacro.Grid - cell size(width)조정  (0) 2017.02.09
Nexacro Grid - 좌.우 라인 제거하기  (0) 2017.01.22
Grid에서 Cell선택  (0) 2017.01.18
Posted by 농부지기
,

[ Nexacro.Grid - cell size(width)조정 ]


Grid cell size 변경

grdItem.setFormatColProperty(0, "size", "0" );

Posted by 농부지기
,

[ Nexacro.Grid -  grid Header Merge ]

 

 


/******************************************************************************************
 * 기능 : Grid header Merge 처리
 * 인자 : objDsHeader  - Grid Header와 동일하게 저장된 Dataset
 *         objGrdHeader - Header가 적용된 Dataset (이미 Header는 적용 되어져 있어야 됨
 * 리턴 :
 * 예문 :
 *****************************************************************************************/
//=================================================================================================
//  grid.mergeContentsCell(strBand,nStartRow,nStartCol,nEndRow,nEndCol,nFirstCell,bKeepSubCell)
//  arg : nStartRow,nStartCol,nEndRow,nEndCol - 특징은 cell이 병합 되기 이전 row, index이다.
//                                              즉, header가 merge되어도 이 4개 값은 이 merge 되기전의 index이다.
//        nFirstCell : 은 cell이 병합된 후의 index이다.
//=================================================================================================

function gfn_pivotGridHeaderMerge(objDsHeader, objGrdHeader){    //넘겨받은 dataset을 복사 해서.. 사용함    var objDsPiovotHeader = new Dataset;    objDsPiovotHeader.name = "objDsPiovotHeader";    this.addChild("objDsPiovotHeader", objDsPiovotHeader);    objDsPiovotHeader.copyData(objDsHeader);     var bCellContinue;    var nMergeIdx = 0, sMergeIdx;    var nHeadCellIdx  = 0;    var nRow=0;    var sBaseText, sNextText, sBefText;    var nStartRow,nStartCol,nEndRow,nEndCol,nFirstCell;    var nAllRow = objDsPiovotHeader.rowcount;    var nColCnt = objDsPiovotHeader.getColCount();    var arrMerge = new Array();    var sMaxMergeIdx; //이미 Merge했던 값 들중 가장 큰값        do {        bCellContinue = false;                //--------------------------------------------------------------------------------------
        // 1. sBaseText 찾기 (merge를 시작할 첫번째 텍스트 값)
        //--------------------------------------------------------------------------------------

        nHeadCellIdx = -1;        sMaxMergeIdx = '';        for(var nColIdx=0; nColIdx<nColCnt; nColIdx++){            sBaseText = objDsPiovotHeader.getColumn(nRow, "headCol" + nColIdx);            // if (nMergeIdx == 4) trace('sBaseText > ' + sBaseText);                        // 숫자면.. 이미 merge를 한 cell로 인식
            if (sBaseText >= "-000" && sBaseText <= "-999"){                continue;                            // 문자명.. 다음 merge를 시작한 baseText로 처리
            }else{                nStartRow = nRow;                nStartCol = nColIdx;                nEndRow   = nRow;                nEndCol   = nColIdx;                //if (nMergeIdx == 0) trace( nMergeIdx.toString().padLeft(3, '0'));
                sMergeIdx = '-' + nMergeIdx.toString().padLeft(3, '0');                objDsPiovotHeader.setColumn(nRow, "headCol" + nColIdx, sMergeIdx ); //찾은 baseText cell은 merge를 한걸로 marking
                bCellContinue = true;                break;            }        }         //--------------------------------------------------------------------------------------
        // 2. BaseText가 Merge후에 몇번째 cell인지 찾기(nFirstCell)
        //    그래서, 이 index를 가지고 merge 후 text값으로 지정하기 위해서.
        //--------------------------------------------------------------------------------------

        nHeadCellIdx  = 0;        sBefText     = '';        sMaxMergeIdx = '';        for(var i=0; i<nAllRow; i++){            for(var j=0; j<nColCnt; j++){                sNextText = objDsPiovotHeader.getColumn(i, "headCol" + j);                if (sMergeIdx == sNextText){                    nFirstCell = nHeadCellIdx;                    break;                }else{                    //문자면 무조건 cellIndex증가
                    if (sNextText < "-000" || sNextText > "-999" || (sNextText >= "가" && sNextText <= "힣"))                        nHeadCellIdx++;                                            //숫자면
                    else{                         //숫자가 달라 졌으면서 &&
//                      if (sBefText <> sNextText) nHeadCellIdx ++;
                                                //if (sMaxMergeIdx < sBefText) sMaxMergeIdx = sBefText;
                        
                        //숫자가 달라 졌으면서 && (다음문자 > 가장큰Merge index)이면 cell 증가
                        if (sBefText <> sNextText && sNextText > sMaxMergeIdx )                               nHeadCellIdx ++;                                                if (sMaxMergeIdx < sBefText) sMaxMergeIdx = sBefText;                    }                }                sBefText = sNextText;            }        }                //--------------------------------------------------------------------------------------
        // 3. 한 Row 끝. 다음 Row 처리 여부 결정
        //--------------------------------------------------------------------------------------
        // bCellContinue == false는 .. 작업중인 row에 merge 모두 완료..   그래서 nRow++로 해서 다음row처리
        // bCellContinue == true는  .. 작업중인 row에 header text가 남은 상황. sBaseText값을 기준으로 다음cell에 같은 값이 존재 하는지 계속 검사

        if (bCellContinue == false){            nRow++;            if (nAllRow<=nRow)                 break;            else                continue;        }                //--------------------------------------------------------------------------------------
        // 4. 기준 sBaseText값을 기준으로 동일한 값이 존재 하는 지 검사
        //--------------------------------------------------------------------------------------

        for(var ii=0; ii<nAllRow; ii++){            for(var nCell=0; nCell<nColCnt; nCell++){                sNextText = objDsPiovotHeader.getColumn(ii, "headCol" + nCell);                // if (nMergeIdx == 2)  trace(' sNextText->' + sNextText + '   :: ' + nHeadCellIdx);            
// if (nMergeIdx == 2) trace('row > ' + ii + ' --. ' + nColIdx + ' ::: ' + nCell + ' --> sBaseText :: ' + sBaseText + ' === ' + sNextText);             
 
                // 문자면
                if (sNextText < "-000" || sNextText > "-999" || (sNextText>="가" && sNextText <= "힣")){ // if (nMergeIdx == 2)  trace('row > ' + ii + ' --. ' + nColIdx + ' ::: ' + nCell + ' --> sBaseText :: ' + sBaseText + ' === ' + sNextText);   
                                 if(sBaseText == sNextText && nColIdx <= nCell){ //  if (nMergeIdx == 1) trace('row > ' + ii + ' .. ' + nHeadCellIdx + ' ::: ' + nCell + ' --> sBaseText :: ' + sBaseText + ' === ' + sNextText + ' :: nMergeIdx > ' + nMergeIdx);   
                                     nEndRow = ii;                        nEndCol = nCell;                                                objDsPiovotHeader.setColumn(ii, "headCol" + nCell, sMergeIdx); //찾은 baseText cell은 merge를 한걸로 marking                    }else{                        if (nColIdx <= nCell) break;   //sBaseText의 cell보다 현재 cell이 더 크면 stop                    }                }            }        }        arrMerge[arrMerge.length] = nStartRow + ',' + nStartCol + ',' + nEndRow + ',' + nEndCol + ',' + nFirstCell; //      trace('--------------------------------' + arrMerge[arrMerge.length-1]);
        nMergeIdx++;    }while(true)    //trace(arrMerge);        //--------------------------------------------------------------------------------------
    // 5. Merge 시작
    //--------------------------------------------------------------------------------------

    var arrMergeValue = new Array();    var nEndCell;    for(var idx=0; idx<arrMerge.length; idx++){        arrMergeValue = arrMerge[idx].split(',');                objGrdHeader.mergeContentsCell("Head",arrMergeValue[0], arrMergeValue[1], arrMergeValue[2],arrMergeValue[3], arrMergeValue[4],false);    }        this.removeChild("objDsPiovotHeader");    //  trace(arrMerge);}
 
☞  
 
☞  
 
 
 
 

  

'Nexacro-Grid > Head' 카테고리의 다른 글

Nexacro.Grid.Head 컬럼 Fixed 처리  (0) 2017.10.17
Posted by 농부지기
,

          [ Nexacro Grid - 한컬럼에 여러줄 보여주기 ]     

한컬럼에 여러줄일경우 여러주 다 보여주기 (AutoHeight 기능)

Grid.UseAutoSizing = 'Row'

Grid.UseExSizing = 'Row'

이때 그리드 Cell속성에도 더 변경해줘야 된다.

Cell.wordwrap.Word : MultiLine속성과는 상관없이 영문자/한글등에 대해 단어단위로 새라인에출력

    .ExChar : WordWrap시 한글등의 2바이트 문자등에 대해서는 글자단위로 새라인에 출력.

              영어의 경우 Word 단위로 WordWrap 하며, 하나의 Word 크기가 셀크기를 넘을

              경우에도 단어단위로 출력

     .AllChar : WordWrap시 한글등의 2바이트 문자등에 대해서는 글자단위로 새라인에 출력.

                영어의 경우 Word 단위로 WordWrap 하며, 하나의 Word 크기가 셀크기를

                넘을 경우에는 글자단위로 새라인에 출력

                   
 

☞ 추가내용

 

  Expr에서 넣을 수 있는 변수
     - getRowType     : insert, update, delete, normal
     - currow         : 현재 row (0 인가? 1인가 ? 부터 시작)  
  
  
Expr에 넣을 수 있는 함수
     - decode()       : Oracle decode 와 사용방법 동일

  Script에서 처리방법  
     -
컬럼 hidden처리         : script 에서  [gr_name.SetColProp(7, "Width", "0"); ]
     -
row순서 및 위치 변경    : script에서   [gr_name.MoveRow() ]  
     -
index의 컬럼명 가져오기 : gr_Name.GetCollPro("body", index, "COLID") 
                                 참고로, cursor위치의 컬럼명을 가져오려면
                                 gr_Name.GetCollPro("body", gr_Name.GetCellPos(), "COLID") 

     -
index의 헤드명 가져오기 : gr_Name.GetCollPro("head", index, "COLID")

   
   

☞ POP_UP

 

1. Modal Dialog
   • 호출시 : str_argument = "변수1=값1 변수2=값2";
              result = Dialog("APP_NAME::FORM_NAME.XML", str_argument,
                               테두리를제외한 Width, 테두리를 제외한 Heigh,
                               strOpenStyle(true이면 CloseFlag설정), 왼쪽좌표, 위쪽좌표) ;
   • pop_up창에서
     - str_argument를 받는 방법
        1. form 변수 선언
        2. 모든 function에서 바로 argument이름으로 사용가능
           즉, 별도 argument을 setting할 필요 없이 바로 사용가능한다.
     - 값 return 한가ㅣ
       1. close(rtn_Value);  

'Nexacro-Grid > Grid' 카테고리의 다른 글

nexacro.Grid cell drag & drop  (0) 2017.03.30
Grid.sort 개발중  (0) 2017.02.24
Nexacro Grid -Combo Filter (필터) 처리  (0) 2017.01.22
Nexacro Grid - ToolTip  (0) 2017.01.22
Nexacro Grid - Self 객체  (0) 2017.01.22
Posted by 농부지기
,

[  ◎ Nexacro Combo Filter (필터) 처리  ]

 

☞ 정의 : 사용자가 콤보를 edit할 수 있고, 이때 콤보에 존재하는 값을 key in 시 바로 필터처리를
          해서 선택의 폭을 줄여 준다.

* 콤보 필터
A. 사용방법
    1. 콤보 속성 : type = filter
    2.                    displantnulltext = '전체'  또는 '선택'
    3. 콤보.ontextchanged(obj:Combo, e:TextChangedEventInfo) event 추가
             script : if (gfn_isNull(e.posttext)) obj.value = '';
B. 설명
    1. type = filter                           
--이 설정으로 combo에 typeing이 가능해진다.
    2. displantnulltext = '전체'  또는 '선택'  
--null값일 경우 default로 보여주는 값
    3. ontextchanged() event
- 사용자가 콤보값을 선택 후  강제로 콤보값을 지우고
                               focus를 이동했을 경우 콤보에 값이 지워지지 않고 처음
                               선택되었던 값 그대로 남아 있게 된다.
                               그래서 ontextchanged() event에서 강제로 value를 공백으로
                               넣어 줘야 값이 지워진다.

'Nexacro-Grid > Grid' 카테고리의 다른 글

Grid.sort 개발중  (0) 2017.02.24
Nexacro Grid - 한컬럼에 여러줄 보여주기  (0) 2017.01.22
Nexacro Grid - ToolTip  (0) 2017.01.22
Nexacro Grid - Self 객체  (0) 2017.01.22
Nexacro Grid - 라인 컬러 지정하기  (0) 2017.01.22
Posted by 농부지기
,

[  ◎ Nexacro Grid - ToolTip ]     

 

 

 
 


1. ToolTip 을 조회 시 라인이 변경될 경우 해당 라인에 ToolTip으로 변경하고 싶을 경우
    Grid.tooltiptype='hover';

2. ToolTip의 폰트는 css 로 변경할 수있다.
    단, 모든 tooltip은 동일하게
 
Tooltip
{
        border            : 2 double #767676ff white ;
        bordertype        : round 5 5;
        gradation         : linear 0,0 #FEFEFE 0,100 #E1E1E1;
        color             : #FFFF80;
        font              : dotum,20,bold;
        padding           : 4 6 4 22;
        margin            : -20 10 20 6 ;
        shadow            : drop 0,1 1 #00000033 ;
}
 

 

Posted by 농부지기
,

[  ◎ Grid Self 객체 ]     

 

 

 
 


ds.getColID(self.col)
     : self.col  <- grid index
 
expr:grdSalePlanDetlView.getCellProperty('body', self.col, 'text') == 'bind:INC_RT0' ? 'edit' : 'display'

Posted by 농부지기
,

[  ◎ Grid 좌.우 라인 제거하기 ]     

 

 

 
 

컬럼.Property.linetype = onlyhorz

 

Posted by 농부지기
,

[  ◎ Grid에 라인 컬러 지정하기 ]     

 

 

 
 


* 정의 : 만약, 그리드의 3번째 Cell의  오른쪽 라인의 color 나 size를 변경하고 싶을 경우에는
              3번째 Cell의 오른쪽, 4번째 Cell의 왼쪽 color나 size를 변경해 줘야 된다.
             이유는  Grid의 라인은 두개의 cell에 결합되어져 있기 때문이다.
 
* 방법 : 만약, 3번째 Cell의 오른쪽 라인에
          첫번째 row 이면서 컬럼값이 '한국'일 경우 오른쪽 라인을 안보이게 하고 싶을 경우
 
             3번째 Cell의 line 속성에
 -->  EXPR:currow==1 && Column1=="한국"?"1 #b1b5b9ff,  0 #b1b5b9ff,  1 #b1b5b9ff,  1 #b1b5b9ff ":""

             4번째 Cell의 line 속성에
 --> EXPR:currow==1 && Column1=="한국"?"1 #b1b5b9ff,  1 #b1b5b9ff,  1 #b1b5b9ff,  0 #b1b5b9ff ":""

             * 속성의 순서는 :  상, 오른쪽, 하, 왼쪽 순서 이다.
 

 

'Nexacro-Grid > Grid' 카테고리의 다른 글

Nexacro Grid - ToolTip  (0) 2017.01.22
Nexacro Grid - Self 객체  (0) 2017.01.22
Nexacro Grid - 숫자만 등록제한  (0) 2017.01.22
Nexacro Grid - 숫자자리수 제한  (0) 2017.01.22
Nexacro Grid - 숫자 format지정하기  (0) 2017.01.22
Posted by 농부지기
,