grid column중 dataset과 bind된 column의 edit max length 설정.

/*----------------------------------------------------------------------------------------------
 * 설명     : grid column중 dataset과 bind된 column의 edit max length 설정.
 * 파라미터 : pGridArray : (필수) 대상 grid array
 * 리턴값    : N/A
-----------------------------------------------------------------------------------------------*/
this.gf_ErpSetGridColMaxLength = function(pGridArray) {
  
  var nEditMaxLength = -1;
  var sBindCol = "";
  var oOuter = this;
  
  if(this.gf_IsNull(pGridArray)) return;
  
  pGridArray.forEach(function(tGrid, idx) {
    for(var nCol = 0; nCol < tGrid.getFormatColCount(); nCol++) {
      try {
        sBindCol = tGrid._getBodyCellInfo(nCol).text._bindexpr;
        if( !oOuter.gf_IsNull(sBindCol) ) {
          nEditMaxLength = tGrid.bindDS.getColumnInfo(sBindCol).size;
          tGrid.setCellProperty("body",nCol,"editmaxlength",nEditMaxLength);
        };
      } catch(e){};
    };
  });
};
사용예)
this.gf_ErpSetGridColMaxLength([this.tab_subDetail.tap_subDetail1.form.grd_SSMCODE37113Out01, 
                                  this.tab_subDetail.tap_subDetail2.form.grd_SSMCODE37113Out02,
                  this.tab_subDetail.tap_subDetail3.form.grd_SSMCODE37113Out03,
                  this.tab_subDetail.tap_subDetail4.form.grd_SSMCODE37113Out04,
                  this.tab_subDetail.tap_subDetail5.form.grd_SSMCODE37113Out05]);

nexacro dataset과 bind된 component의 max length 설정.

/*----------------------------------------------------------------------------------------------
 * 설명     : dataset과 bind된 component의 max length 설정.
 * 파라미터 : pForm : (필수) form object. 보통 this를 넘기면 됨.
 * 리턴값    : N/A
-----------------------------------------------------------------------------------------------*/
this.gf_ErpSetBindCompMaxLength = function(pForm) {
  var sColId = "";
  var aBindList = pForm.binds;
  for( var nIdx = 0; nIdx < aBindList.length; nIdx++ ){
    sColId = aBindList[nIdx].columnid;
    try {
      if( !this.gf_IsNull(aBindList[nIdx]._dataset) && !this.gf_IsNull(aBindList[nIdx]._comp.maxlength) ) {
        for( var nCol = 0; nCol < aBindList[nIdx]._dataset.colinfos.length; nCol++ ) {
          if( sColId == aBindList[nIdx]._dataset.colinfos[nCol].id ) {
            aBindList[nIdx]._comp.set_maxlength(aBindList[nIdx]._dataset.colinfos[nCol].size);
          };
        };
      };
    } catch(e) {
      this.gf_Trace("["+sColId+"] : " + e.message);
    };
  };
};
사용예)
this.gf_ErpSetBindCompMaxLength(this);

nexacro 필수값 체크

/*----------------------------------------------------------------------------------------------
 * 설명     : 필수값 체크
 * 파라미터 : pContainer : (필수)필수값 체크를 할 대상을 포함하는 Container Object Array.
 *                pSetting : (선택)
 *                  moveFocus : (선택), true(기본)-값이 없는 element로 focus 이동, false : focus 이동 않함.
                    popupAlert : (선택) 필수값없을시 alert 메시지를 popup시킬지 여부.
                       true : (기본) popup 함.
                 false : popup 않함.
 * 리턴값    : pResult : 
                    successYn : true : 필수값이 모두 입력됐을경우, false : 필수값이 모두 입력되지 않았을경우.
          message : check 결과 메시지. 필수값 오류시 오류 내용
-----------------------------------------------------------------------------------------------*/
this.gf_ErpCheckMandatory = function(pContainer, pSetting)
{
  var bPopupAlert = true;
  
  try {
    bPopupAlert = pSetting.popupAlert;
  } catch(e) {};
  
  var oResult = {
      successYn : true,
      message : "정상"
  };
  
  if( pContainer instanceof nexacro.Div ) {
    var aTargetList = document.getElementById(pContainer._unique_id).querySelectorAll(".essential");
    for( var idx = 0; idx < aTargetList.length; idx++) {
      try{
        if(this.gf_IsNull(nexacro._findComponentForId(aTargetList[idx].id).value)) {
          oResult.successYn = false;
          oResult.message = "필수값이 없습니다. ["+ aTargetList[idx].title+"]";
          if(bPopupAlert){
            this.gf_Alert(this,oResult.message);
          };
          nexacro._findComponentForId(aTargetList[idx].id).setFocus();
          return oResult;
        };
      } catch(e) {};
      
    };
  } else if( pContainer instanceof nexacro.Grid ) { 
    var aMandatoryCols = [];
    for( var idx = 0; idx < pContainer._formats.default._headcells.length ; idx++) {
      if(pContainer._formats.default._headcells[idx].cssclass._value == "essential") {
        aMandatoryCols.push(pContainer._formats.default._headcells[idx]._col);
      };
    };
    
    for( var nRow = 0; nRow < pContainer.bindDS.rowcount; nRow++ ) {
      for( var idx = 0; idx < aMandatoryCols.length; idx++ ) {
        var nColIdx = aMandatoryCols[idx];
        var sColId = pContainer._formats.default._bodycells[nColIdx].text._bindexpr;
        var sText = "";
        if( !this.gf_IsNull(sColId) && this.gf_IsNull(pContainer.bindDS.getColumn(nRow,sColId)) ) {
          oResult.successYn = false;
          sText = this.gf_Nvl(pContainer._formats.default._headcells[nColIdx].tooltiptext._value, pContainer._formats.default._headcells[nColIdx].text._value);
          oResult.message = "필수값이 없습니다. ["+ sText+"("+(nRow+1)+"행)]";
          if(bPopupAlert){
            this.gf_Alert(this,oResult.message);
          };
          return oResult;
        };
      };
    };
  };
  
  return oResult;
};
사용예)
oResult = this.gf_ErpCheckMandatory(this.tab_main.tap_reg.form.div_base, {popupAlert:false});
  if(!oResult.successYn) {
    return oResult;
  };