• 고객센터
  • 교육
  • 매뉴얼
  • 데모
  • 제품소개
조회 수 : 1602
2009.11.05 (15:19:57)
꽁수 방법입니다. MGRID는 width를 자동으로 바꾸지안키때문에 DB상에서 불러오는 해더컬럼명이 길경우
짤리는 그런증상이 있지요..컬럼의 갯수가 만을경우 후속으로 오는컬럼  위치를 전부 수정하는것도 일이구요..

하지만 머리를 조금쓰면 간단하게 해결됩니다. 그리드의 ColumnInfo 를 활용하면됩니다.

아시다시피 ColumnInfo에는 해더정보및 컬럼정보등등이 들어갑니다. 그렇키 때문에

바인딩된 데이터셋의 로우만큼 포문을 돌며 ColumnInfo정보 스트링 구문을 만들어내는게 가능합니다.

물론 그리기위한 정보는 데이터셋이 들고와야하는건 알겁니다.
<div id="auto_width" style="position: absolute;visibility: hidden;height: auto;width: auto"></div>이런객채를 만들어둡니다. 해더문자길이는 클라이언트마다(폰트)마다 다르기때문에 문자length로는 길이를 알수없습니다.

        var fontSize=MGrids.currentStyle.fontSize; --기본폰트크기를 가져옵니다(CSS에 정의된크기)
        var startleft=0;
        var startright=0;
                var info='';
                   for(){
        document.getElementById("auto_width").innerText=this.NameValue(i,"BUTTON_NM"); --해더의택스트컬럼값 을 히든객체에 집어넣코
        var text_width = document.getElementById("auto_width");--히든객채를 가져와서
        text_width.style.fontSize = fontSize; --히든객채의 폰트사이즈를 기본으로 변경한후
        var width = (text_width.clientWidth + 1);--히든객채의 넓이를 가져옵니다.
                     startright=startleft+(parseInt(fontSize)+width+parseInt(fontSize));--객채의넓이와 폰트의 pt값을이용  right값을 구해냅니다.

                     info+='<COLUMN id="test" refcolid="test">';
                     info+='<HEADER left="'+startleft+'" top="0" right="'+startright+'" fontsize="'+fontSize+'">';
                     info+='<VIEW left="'+startleft+'" top="0" right="'+startright+'"/>';
                     info+='<CHILD type="check"/>';
                     info+='</COLUMN>';
                     startleft=startright;-- right에left값을 복사합니다.            
                   }
        info +='</COLUMNINFO>';
                MGrids.ColumnInfo=info

이런방식으로 info객채를 따로 그려주면 데이터셋은 알아서 바인딩이 되므로 해더의 사이즈를 더블클릭해서 넓혀줄필요가 없어집니다.
 
Tag List
XE Login