function repaintBody(_elTargetKey, _colGroup, _bodyRow, _groupRow, _list, _scrollConfig) {
    var _elTarget = this.$.panel[_elTargetKey];

    if (!isFirstPaint && !_scrollConfig) {
      this.$.livePanelKeys.push(_elTargetKey); // 사용중인 패널키를 모아둠. (뷰의 상태 변경시 사용하려고)
      return false;
    }

    var SS = [],
        cgi = void 0,
        cgl = void 0,
        di = void 0,
        dl = void 0,
        tri = void 0,
        trl = void 0,
        ci = void 0,
        cl = void 0,
        col = void 0,
        cellHeight = void 0,
        colAlign = void 0,
        isScrolled = function () {
      // 스크롤값이 변경되거나 처음 호출되었습니까?
      if (typeof _scrollConfig === "undefined" || typeof _scrollConfig['paintStartRowIndex'] === "undefined") {
        _scrollConfig = {
          paintStartRowIndex: 0,
          paintRowCount: _list.length
        };
        return false;
      } else {
        return true;
      }
    }(),
        stripeString = '#fff 0px, #fff ' + (cfg.body.columnHeight - cfg.body.columnBorderWidth) + 'px, #eee ' + (cfg.body.columnHeight - cfg.body.columnBorderWidth) + 'px, #eee ' + cfg.body.columnHeight + 'px';

    if (isScrolled) {
      SS.push('<div style="background:repeating-linear-gradient(to top, ' + stripeString + ');' + 'font-size:0;' + 'line-height:0;height: ' + (_scrollConfig.paintStartRowIndex - this.xvar.frozenRowIndex) * _scrollConfig.bodyTrHeight + 'px;"></div>');
    }

    SS.push('<table border="0" cellpadding="0" cellspacing="0">');
    SS.push('<colgroup>');
    for (cgi = 0, cgl = _colGroup.length; cgi < cgl; cgi++) {
      SS.push('<col style="width:' + _colGroup[cgi]._width + 'px;"  />');
    }
    SS.push('<col  />');
    SS.push('</colgroup>');

    di = _scrollConfig.paintStartRowIndex;

    for (dl = function () {
      var len = void 0;
      len = _list.length;
      if (_scrollConfig.paintRowCount + _scrollConfig.paintStartRowIndex < len) {
        len = _scrollConfig.paintRowCount + _scrollConfig.paintStartRowIndex;
      }
      return len;
    }(); di < dl; di++) {

      if (_list[di]) {
        var isGroupingRow = false,
            rowTable = void 0,
            odi = typeof _list[di].__origin_index__ !== "undefined" ? _list[di].__origin_index__ : di;
        if (_groupRow && "__isGrouping" in _list[di]) {
          rowTable = _groupRow;
          isGroupingRow = true;
        } else {
          rowTable = _bodyRow;
        }

        for (tri = 0, trl = rowTable.rows.length; tri < trl; tri++) {

          SS.push('<tr class="tr-' + di % 4 + '', cfg.body.trStyleClass ? _AX6Util2.default.isFunction(cfg.body.trStyleClass) ? ' ' + cfg.body.trStyleClass.call({
            item: _list[di],
            index: di
          }, _list[di], di) : ' ' + cfg.body.trStyleClass : '', '"', isGroupingRow ? ' data-ax6grid-grouping-tr="true"' : '', ' data-ax6grid-tr-data-index="' + di + '"', ' data-ax6grid-tr-data-o-index="' + odi + '"', ' data-ax6grid-selected="' + (_list[di][cfg.columnKeys.selected] || "false") + '"', ' data-ax6grid-disable-selection="' + (_list[di][cfg.columnKeys.disableSelection] || "false") + '"', '>');
          for (ci = 0, cl = rowTable.rows[tri].cols.length; ci < cl; ci++) {
            col = rowTable.rows[tri].cols[ci];
            cellHeight = cfg.body.columnHeight * col.rowspan - cfg.body.columnBorderWidth;
            colAlign = col.align || bodyAlign;

            SS.push('<td ', 'data-ax6grid-panel-name="' + _elTargetKey + '" ', 'data-ax6grid-data-index="' + di + '" ', 'data-ax6grid-data-o-index="' + odi + '" ', 'data-ax6grid-column-row="' + tri + '" ', 'data-ax6grid-column-col="' + ci + '" ', 'data-ax6grid-column-rowIndex="' + col.rowIndex + '" ', 'data-ax6grid-column-colIndex="' + col.colIndex + '" ', 'data-ax6grid-column-attr="' + (col.columnAttr || "default") + '" ', function (_focusedColumn, _selectedColumn) {
              var attrs = "";
              if (_focusedColumn) {
                attrs += 'data-ax6grid-column-focused="true" ';
              }
              if (_selectedColumn) {
                attrs += 'data-ax6grid-column-selected="true" ';
              }
              return attrs;
            }(this.focusedColumn[di + "_" + col.colIndex + "_" + col.rowIndex], this.selectedColumn[di + "_" + col.colIndex + "_" + col.rowIndex]), 'colspan="' + col.colspan + '" ', 'rowspan="' + col.rowspan + '" ', 'class="' + function (_col) {
              var tdCSS_class = "";
              if (_col.styleClass) {
                if (_AX6Util2.default.isFunction(_col.styleClass)) {
                  tdCSS_class += _col.styleClass.call({
                    column: _col,
                    key: _col.key,
                    item: _list[di],
                    index: di
                  }) + " ";
                } else {
                  tdCSS_class += _col.styleClass + " ";
                }
              }
              if (cfg.body.columnBorderWidth) tdCSS_class += "hasBorder ";
              if (ci == cl - 1) tdCSS_class += "isLastColumn ";
              return tdCSS_class;
            }.call(this, col) + '" ', 'style="height: ' + cellHeight + 'px;min-height: 1px;">');

            SS.push(function (_cellHeight) {
              var lineHeight = cfg.body.columnHeight - cfg.body.columnPadding * 2 - cfg.body.columnBorderWidth;
              if (!col.multiLine) {
                _cellHeight = cfg.body.columnHeight - cfg.body.columnBorderWidth;
              }

              return '<span data-ax6grid-cellHolder="' + (col.multiLine ? 'multiLine' : '') + '" ' + (colAlign ? 'data-ax6grid-text-align="' + colAlign + '"' : '') + '" style="height:' + _cellHeight + 'px;' + (col.multiLine ? '' : 'line-height: ' + lineHeight + 'px;') + '">';
            }(cellHeight), isGroupingRow ? getGroupingValue.call(this, _list[di], di, col) : getFieldValue.call(this, _list, _list[di], di, col), '</span>');

            SS.push('</td>');
          }
          SS.push('<td ', 'data-ax6grid-column-row="null" ', 'data-ax6grid-column-col="null" ', 'data-ax6grid-data-index="' + di + '" ', 'data-ax6grid-data-o-index="' + odi + '" ', 'data-ax6grid-column-attr="' + "default" + '" ', 'style="height: ' + cfg.body.columnHeight + 'px;min-height: 1px;" ', '></td>');
          SS.push('</tr>');
        }
      }
    }
    SS.push('</table>');

    if (isScrolled && _list.length) {
      SS.push('<div style="background:repeating-linear-gradient(to bottom, ' + stripeString + ');' + 'font-size:0;' + 'line-height:0;height: ' + (_list.length - di) * _scrollConfig.bodyTrHeight + 'px;"></div>');
    }

    _elTarget.empty();
    SS = SS.join('');

    _elTarget.get(0).innerHTML = SS;

    this.$.livePanelKeys.push(_elTargetKey); // 사용중인 패널키를 모아둠. (뷰의 상태 변경시 사용하려고)
    return true;
  }
function repaintBody(_elTargetKey, _colGroup, _bodyRow, _groupRow, _list, _scrollConfig) {
    var _elTarget = this.$.panel[_elTargetKey];

    if (!isFirstPaint && !_scrollConfig) {
      this.$.livePanelKeys.push(_elTargetKey); 
      return false;
    }

    var SS = [],
        cgi = void 0,
        cgl = void 0,
        di = void 0,
        dl = void 0,
        tri = void 0,
        trl = void 0,
        ci = void 0,
        cl = void 0,
        col = void 0,
        cellHeight = void 0,
        colAlign = void 0,
        isScrolled = function () {
      
      if (typeof _scrollConfig === "undefined" || typeof _scrollConfig['paintStartRowIndex'] === "undefined") {
        _scrollConfig = {
          paintStartRowIndex: 0,
          paintRowCount: _list.length
        };
        return false;
      } else {
        return true;
      }
    }(),
        stripeString = '#fff 0px, #fff ' + (cfg.body.columnHeight - cfg.body.columnBorderWidth) + 'px, #eee ' + (cfg.body.columnHeight - cfg.body.columnBorderWidth) + 'px, #eee ' + cfg.body.columnHeight + 'px';

    if (isScrolled) {
      SS.push('<div style="background:repeating-linear-gradient(to top, ' + stripeString + ');' + 'font-size:0;' + 'line-height:0;height: ' + (_scrollConfig.paintStartRowIndex - this.xvar.frozenRowIndex) * _scrollConfig.bodyTrHeight + 'px;"></div>');
    }

    SS.push('<table border="0" cellpadding="0" cellspacing="0">');
    SS.push('<colgroup>');
    for (cgi = 0, cgl = _colGroup.length; cgi < cgl; cgi++) {
      SS.push('<col style="width:' + _colGroup[cgi]._width + 'px;"  />');
    }
    SS.push('<col  />');
    SS.push('</colgroup>');

    di = _scrollConfig.paintStartRowIndex;

    for (dl = function () {
      var len = void 0;
      len = _list.length;
      if (_scrollConfig.paintRowCount + _scrollConfig.paintStartRowIndex < len) {
        len = _scrollConfig.paintRowCount + _scrollConfig.paintStartRowIndex;
      }
      return len;
    }(); di < dl; di++) {

      if (_list[di]) {
        var isGroupingRow = false,
            rowTable = void 0,
            odi = typeof _list[di].__origin_index__ !== "undefined" ? _list[di].__origin_index__ : di;
        if (_groupRow && "__isGrouping" in _list[di]) {
          rowTable = _groupRow;
          isGroupingRow = true;
        } else {
          rowTable = _bodyRow;
        }

        for (tri = 0, trl = rowTable.rows.length; tri < trl; tri++) {

          SS.push('<tr class="tr-' + di % 4 + '', cfg.body.trStyleClass ? _AX6Util2.default.isFunction(cfg.body.trStyleClass) ? ' ' + cfg.body.trStyleClass.call({
            item: _list[di],
            index: di
          }, _list[di], di) : ' ' + cfg.body.trStyleClass : '', '"', isGroupingRow ? ' data-ax6grid-grouping-tr="true"' : '', ' data-ax6grid-tr-data-index="' + di + '"', ' data-ax6grid-tr-data-o-index="' + odi + '"', ' data-ax6grid-selected="' + (_list[di][cfg.columnKeys.selected] || "false") + '"', ' data-ax6grid-disable-selection="' + (_list[di][cfg.columnKeys.disableSelection] || "false") + '"', '>');
          for (ci = 0, cl = rowTable.rows[tri].cols.length; ci < cl; ci++) {
            col = rowTable.rows[tri].cols[ci];
            cellHeight = cfg.body.columnHeight * col.rowspan - cfg.body.columnBorderWidth;
            colAlign = col.align || bodyAlign;

            SS.push('<td ', 'data-ax6grid-panel-name="' + _elTargetKey + '" ', 'data-ax6grid-data-index="' + di + '" ', 'data-ax6grid-data-o-index="' + odi + '" ', 'data-ax6grid-column-row="' + tri + '" ', 'data-ax6grid-column-col="' + ci + '" ', 'data-ax6grid-column-rowIndex="' + col.rowIndex + '" ', 'data-ax6grid-column-colIndex="' + col.colIndex + '" ', 'data-ax6grid-column-attr="' + (col.columnAttr || "default") + '" ', function (_focusedColumn, _selectedColumn) {
              var attrs = "";
              if (_focusedColumn) {
                attrs += 'data-ax6grid-column-focused="true" ';
              }
              if (_selectedColumn) {
                attrs += 'data-ax6grid-column-selected="true" ';
              }
              return attrs;
            }(this.focusedColumn[di + "_" + col.colIndex + "_" + col.rowIndex], this.selectedColumn[di + "_" + col.colIndex + "_" + col.rowIndex]), 'colspan="' + col.colspan + '" ', 'rowspan="' + col.rowspan + '" ', 'class="' + function (_col) {
              var tdCSS_class = "";
              if (_col.styleClass) {
                if (_AX6Util2.default.isFunction(_col.styleClass)) {
                  tdCSS_class += _col.styleClass.call({
                    column: _col,
                    key: _col.key,
                    item: _list[di],
                    index: di
                  }) + " ";
                } else {
                  tdCSS_class += _col.styleClass + " ";
                }
              }
              if (cfg.body.columnBorderWidth) tdCSS_class += "hasBorder ";
              if (ci == cl - 1) tdCSS_class += "isLastColumn ";
              return tdCSS_class;
            }.call(this, col) + '" ', 'style="height: ' + cellHeight + 'px;min-height: 1px;">');

            SS.push(function (_cellHeight) {
              var lineHeight = cfg.body.columnHeight - cfg.body.columnPadding * 2 - cfg.body.columnBorderWidth;
              if (!col.multiLine) {
                _cellHeight = cfg.body.columnHeight - cfg.body.columnBorderWidth;
              }

              return '<span data-ax6grid-cellHolder="' + (col.multiLine ? 'multiLine' : '') + '" ' + (colAlign ? 'data-ax6grid-text-align="' + colAlign + '"' : '') + '" style="height:' + _cellHeight + 'px;' + (col.multiLine ? '' : 'line-height: ' + lineHeight + 'px;') + '">';
            }(cellHeight), isGroupingRow ? getGroupingValue.call(this, _list[di], di, col) : getFieldValue.call(this, _list, _list[di], di, col), '</span>');

            SS.push('</td>');
          }
          SS.push('<td ', 'data-ax6grid-column-row="null" ', 'data-ax6grid-column-col="null" ', 'data-ax6grid-data-index="' + di + '" ', 'data-ax6grid-data-o-index="' + odi + '" ', 'data-ax6grid-column-attr="' + "default" + '" ', 'style="height: ' + cfg.body.columnHeight + 'px;min-height: 1px;" ', '></td>');
          SS.push('</tr>');
        }
      }
    }
    SS.push('</table>');

    if (isScrolled && _list.length) {
      SS.push('<div style="background:repeating-linear-gradient(to bottom, ' + stripeString + ');' + 'font-size:0;' + 'line-height:0;height: ' + (_list.length - di) * _scrollConfig.bodyTrHeight + 'px;"></div>');
    }

    _elTarget.empty();
    SS = SS.join('');

    _elTarget.get(0).innerHTML = SS;

    this.$.livePanelKeys.push(_elTargetKey); 
    return true;
  }
function repaintBody ( _elTargetKey , _colGroup , _bodyRow , _groupRow , _list , _scrollConfig ) { var _elTarget = this . $ . panel [ _elTargetKey ] ; if ( ! isFirstPaint && ! _scrollConfig ) { this . $ . livePanelKeys . push ( _elTargetKey ) ; // 사용중인 패널키를 모아둠. (뷰의 상태 변경시 사용하려고) return false ; } var SS = [ ] , cgi = void 0 , cgl = void 0 , di = void 0 , dl = void 0 , tri = void 0 , trl = void 0 , ci = void 0 , cl = void 0 , col = void 0 , cellHeight = void 0 , colAlign = void 0 , isScrolled = function ( ) { // 스크롤값이 변경되거나 처음 호출되었습니까? if ( typeof _scrollConfig === "undefined" || typeof _scrollConfig [ 'paintStartRowIndex' ] === "undefined" ) { _scrollConfig = { paintStartRowIndex : 0 , paintRowCount : _list . length } ; return false ; } else { return true ; } } ( ) , stripeString = '#fff 0px, #fff ' + ( cfg . body . columnHeight - cfg . body . columnBorderWidth ) + 'px, #eee ' + ( cfg . body . columnHeight - cfg . body . columnBorderWidth ) + 'px, #eee ' + cfg . body . columnHeight + 'px' ; if ( isScrolled ) { SS . push ( '<div style="background:repeating-linear-gradient(to top, ' + stripeString + ');' + 'font-size:0;' + 'line-height:0;height: ' + ( _scrollConfig . paintStartRowIndex - this . xvar . frozenRowIndex ) * _scrollConfig . bodyTrHeight + 'px;"></div>' ) ; } SS . push ( '<table border="0" cellpadding="0" cellspacing="0">' ) ; SS . push ( '<colgroup>' ) ; for ( cgi = 0 , cgl = _colGroup . length ; cgi < cgl ; cgi ++ ) { SS . push ( '<col style="width:' + _colGroup [ cgi ] . _width + 'px;"  />' ) ; } SS . push ( '<col  />' ) ; SS . push ( '</colgroup>' ) ; di = _scrollConfig . paintStartRowIndex ; for ( dl = function ( ) { var len = void 0 ; len = _list . length ; if ( _scrollConfig . paintRowCount + _scrollConfig . paintStartRowIndex < len ) { len = _scrollConfig . paintRowCount + _scrollConfig . paintStartRowIndex ; } return len ; } ( ) ; di < dl ; di ++ ) { if ( _list [ di ] ) { var isGroupingRow = false , rowTable = void 0 , odi = typeof _list [ di ] . __origin_index__ !== "undefined" ? _list [ di ] . __origin_index__ : di ; if ( _groupRow && "__isGrouping" in _list [ di ] ) { rowTable = _groupRow ; isGroupingRow = true ; } else { rowTable = _bodyRow ; } for ( tri = 0 , trl = rowTable . rows . length ; tri < trl ; tri ++ ) { SS . push ( '<tr class="tr-' + di % 4 + '' , cfg . body . trStyleClass ? _AX6Util2 . default . isFunction ( cfg . body . trStyleClass ) ? ' ' + cfg . body . trStyleClass . call ( { item : _list [ di ] , index : di } , _list [ di ] , di ) : ' ' + cfg . body . trStyleClass : '' , '"' , isGroupingRow ? ' data-ax6grid-grouping-tr="true"' : '' , ' data-ax6grid-tr-data-index="' + di + '"' , ' data-ax6grid-tr-data-o-index="' + odi + '"' , ' data-ax6grid-selected="' + ( _list [ di ] [ cfg . columnKeys . selected ] || "false" ) + '"' , ' data-ax6grid-disable-selection="' + ( _list [ di ] [ cfg . columnKeys . disableSelection ] || "false" ) + '"' , '>' ) ; for ( ci = 0 , cl = rowTable . rows [ tri ] . cols . length ; ci < cl ; ci ++ ) { col = rowTable . rows [ tri ] . cols [ ci ] ; cellHeight = cfg . body . columnHeight * col . rowspan - cfg . body . columnBorderWidth ; colAlign = col . align || bodyAlign ; SS . push ( '<td ' , 'data-ax6grid-panel-name="' + _elTargetKey + '" ' , 'data-ax6grid-data-index="' + di + '" ' , 'data-ax6grid-data-o-index="' + odi + '" ' , 'data-ax6grid-column-row="' + tri + '" ' , 'data-ax6grid-column-col="' + ci + '" ' , 'data-ax6grid-column-rowIndex="' + col . rowIndex + '" ' , 'data-ax6grid-column-colIndex="' + col . colIndex + '" ' , 'data-ax6grid-column-attr="' + ( col . columnAttr || "default" ) + '" ' , function ( _focusedColumn , _selectedColumn ) { var attrs = "" ; if ( _focusedColumn ) { attrs += 'data-ax6grid-column-focused="true" ' ; } if ( _selectedColumn ) { attrs += 'data-ax6grid-column-selected="true" ' ; } return attrs ; } ( this . focusedColumn [ di + "_" + col . colIndex + "_" + col . rowIndex ] , this . selectedColumn [ di + "_" + col . colIndex + "_" + col . rowIndex ] ) , 'colspan="' + col . colspan + '" ' , 'rowspan="' + col . rowspan + '" ' , 'class="' + function ( _col ) { var tdCSS_class = "" ; if ( _col . styleClass ) { if ( _AX6Util2 . default . isFunction ( _col . styleClass ) ) { tdCSS_class += _col . styleClass . call ( { column : _col , key : _col . key , item : _list [ di ] , index : di } ) + " " ; } else { tdCSS_class += _col . styleClass + " " ; } } if ( cfg . body . columnBorderWidth ) tdCSS_class += "hasBorder " ; if ( ci == cl - 1 ) tdCSS_class += "isLastColumn " ; return tdCSS_class ; } . call ( this , col ) + '" ' , 'style="height: ' + cellHeight + 'px;min-height: 1px;">' ) ; SS . push ( function ( _cellHeight ) { var lineHeight = cfg . body . columnHeight - cfg . body . columnPadding * 2 - cfg . body . columnBorderWidth ; if ( ! col . multiLine ) { _cellHeight = cfg . body . columnHeight - cfg . body . columnBorderWidth ; } return '<span data-ax6grid-cellHolder="' + ( col . multiLine ? 'multiLine' : '' ) + '" ' + ( colAlign ? 'data-ax6grid-text-align="' + colAlign + '"' : '' ) + '" style="height:' + _cellHeight + 'px;' + ( col . multiLine ? '' : 'line-height: ' + lineHeight + 'px;' ) + '">' ; } ( cellHeight ) , isGroupingRow ? getGroupingValue . call ( this , _list [ di ] , di , col ) : getFieldValue . call ( this , _list , _list [ di ] , di , col ) , '</span>' ) ; SS . push ( '</td>' ) ; } SS . push ( '<td ' , 'data-ax6grid-column-row="null" ' , 'data-ax6grid-column-col="null" ' , 'data-ax6grid-data-index="' + di + '" ' , 'data-ax6grid-data-o-index="' + odi + '" ' , 'data-ax6grid-column-attr="' + "default" + '" ' , 'style="height: ' + cfg . body . columnHeight + 'px;min-height: 1px;" ' , '></td>' ) ; SS . push ( '</tr>' ) ; } } } SS . push ( '</table>' ) ; if ( isScrolled && _list . length ) { SS . push ( '<div style="background:repeating-linear-gradient(to bottom, ' + stripeString + ');' + 'font-size:0;' + 'line-height:0;height: ' + ( _list . length - di ) * _scrollConfig . bodyTrHeight + 'px;"></div>' ) ; } _elTarget . empty ( ) ; SS = SS . join ( '' ) ; _elTarget . get ( 0 ) . innerHTML = SS ; this . $ . livePanelKeys . push ( _elTargetKey ) ; // 사용중인 패널키를 모아둠. (뷰의 상태 변경시 사용하려고) return true ; }
그리드 바디 영역 페인트 함수 
@param _elTargetKey
@param _colGroup
@param _bodyRow
@param _groupRow
@param _list
@param [_scrollConfig]
@returns {boolean}
그리드 바디 영역 페인트 함수