Where The Streets Have No Name

IBSheet를 이용하여 select 테그 내용을 가져다 채우기 본문

Developement/RIA

IBSheet를 이용하여 select 테그 내용을 가져다 채우기

highheat 2007. 10. 3. 16:46

출처 : http://blog.naver.com/pkoksh/150020605065

//**********************************************************************************************
//  공통 Javascript 소스
//**********************************************************************************************
//---------------------------------------------------------------------------------------------
// combodata로 select box 에 append 시킨다.
//---------------------------------------------------------------------------------------------
function makeSelect(selectObj, text){
var temp;
if(text.indexOf("|!|")>0){
  temp = text.split("|!|");
  text = temp[0]+temp[2];
}
 selectObj.options.length = 0;
 var arr = text.split("#");
  for ( var n = 0; n < arr.length; n++ )
  {
    if ( arr[n] )
    {
      var cdnm = arr[n].split("@@");
      selectObj.options[selectObj.options.length] = new Option(trim(cdnm[1]), trim(cdnm[0]));
    }
  }
 
 if(temp!=null){
 selectObj.value = temp[1]; 
  }
}

/*---------------------------------------------------------------------------------------------

IBSheet 를 통해 받아온 xml 스트링과 그 안에 ETC-DATA로 넣은 KEY 값을 넣으면 안에 데이터를 리턴
parameter 1 : IBSheet를 통해 받아온 xml string
parameter 2 : 스트링 중에 추출하고자 하는 KEY 값
---------------------------------------------------------------------------------------------*/
function getEtcData(xmlStr,etcname){
  if(xmlStr == null || xmlStr == "") return;

    var xmlDoc = new ActiveXObject("Microsoft.XMLDOM" );
    xmlDoc.loadXML(xmlStr);

    var xmlRoot = xmlDoc.documentElement;
    if(xmlRoot == null) return;

    var etcDataNode = xmlRoot.getElementsByTagName("ETC-DATA").item(0);
    if(etcDataNode == null) return;

    var etcNodes = etcDataNode.childNodes;
    if(etcDataNode == null) return;

    var clength = etcNodes.length;
    
    for(i=0;i<clength;i++){
     if(etcNodes[i].getAttribute("KEY")==etcname){
      return etcNodes[i].text;
     }
    }
         
}
//**********************************************************************************************
//  화면의 jsp 쪽 소스
//**********************************************************************************************
//javascript 부분
//---------------------------------------------------------------------------------------------
//몰래 데이터를 가져오는 부분
//---------------------------------------------------------------------------------------------
function getEduMidData(str){
 //시트를 통해 조회시 조회 이미지를 나타나지 않게 한다.
 msheet.WaitImageVisible = false;
 
 var frm = document.form1;
 //필요한 값 설정
 frm.S_METHOD.value = "edu_mid_cd_search";

 //아이비시트를 통해 조회
 var temp = msheet.GetSaveXml("/weblogic/sheetAction.sheet",FormQueryString(frm));
 
 //받은 데이터 중에 eud_mid_cd 라는 KEY값을 갖고 있는 데이터를 추출한다.
 temp = getEtcData(temp,"eud_mid_cd");

 //시트를 통해 조회시 이미지를 나타나게 한다.
 msheet.WaitImageVisible = true;   
 
 //받은 데이터를 s_edu_mid_cd select 테그에 설정한다.
 makeSelect(frm.s_edu_mid_cd,temp)
 
 return temp;
}

//**********************************************************************************************
// 서버쪽 java 소스
//**********************************************************************************************
//---------------------------------------------------------------------------------------------
//중분류 데이터를 얻어오는 메서드
//---------------------------------------------------------------------------------------------
public void edu_mid_cd_search(SingleForm form) throws Exception
{
 try {
  CommonCode jCode = new CommonCode();

  // 교육분야 중분류
  ArrayList arr2 = new ArrayList(); 
  HashMap map2 = new HashMap();
  int arrSize2 = 0;
  System.out.println("++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++");
  String target_sel =  StringUtil.avoidNull(form.getValue("target_sel"));
  String s_edu_lrg_cd = StringUtil.avoidNull(form.getValue("s_edu_lrg_cd")); // 대분류
  String s_edu_mid_cd = StringUtil.avoidNull(form.getValue("s_edu_mid_cd")); // 중분류
  String y_edu_mid_cd = StringUtil.avoidNull(form.getValue("y_edu_mid_cd"));
  
  if(target_sel.equals("edu_mid_cd")){
   arr2 = getEduMid(s_edu_lrg_cd); //Html select테그 중분류
  }else{
   arr2 = getEduMid(target_sel);  //IBSheet 중분류
  }

  arrSize2 = arr2.size();
  StringBuffer sb = new StringBuffer();
  //==============여기가 중요 ================================
  //select 테그에 들어갈 데이터를   
  // CODE1@@TEXT1#CODE2@@TEXT2#CODE3@@TEXT3#...   형태로 가져옴
  //==============여기가 중요 ================================
  for(int i=0; i<arrSize2; i++) {
   map2 = (HashMap)arr2.get(i);
   if(((String)map2.get("EDU_MID_CD")).equals(y_edu_mid_cd)) { sb.append("|!|"+map2.get("EDU_MID_CD")+"|!|"); }
   sb.append(map2.get("EDU_MID_CD")+"@@"+map2.get("EDU_MID_CDNM")+"#");
  } 

  //만든 데이터를 etc 데이터 형태로 만든다.
  addEtcData("eud_mid_cd",sb.toString());
 }
 catch (Exception e) {
  throw e;
 }
}