안녕하세요.
답변 감사드립니다.
알려 주신데로 하니 되긴 하는데...
정확히 안되네요... ㅠㅠ
10의 항목이 목록으로 출력 되고, 그 중 2개만 선택해서
submit하면 선택된 값의 key 값이 스크립트에서는
잘 표기 됩니다만, 자바에서는 마지막 값만 넘어 옵니다.
알려 주신데로 아래와 같이 소스를 변경 하였습니다.
ds_02.SetDataHeader("revkey:STRING(10), loginId:STRING(20), chst:STRING(8)");
for(i=1; i<=ds_01.CountRow; i++){
chk = ds_01.NameValue(i, 'chk');
if(chk == '1'){
ds_02.Addrow();
ds_02.NameValue(i, "revkey") = ds_01.NameValue(i, "sjIdx");
ds_02.NameValue(i, "loginId") = "<c:out value='${loginUser.userId}'/>";
ds_02.NameValue(i, "chst") = 'CHST0005';
}else{
ds_02.Addrow();
ds_02.NameValue(1, "revkey") = ds_01.NameValue(ds_01.RowPosition, "sjIdx");
ds_02.NameValue(1, "loginId") = "<c:out value='${loginUser.userId}'/>";
ds_02.NameValue(1, "chst") = 'CHST0005';
}
}
tr_01.KeyValue = "JSP(I:input_01=ds_02)";
tr_01.KeyName = "toinb_dataid4";
tr_01.Action="<c:url value='/gen/SCGenStopCallAutoEnd.do'/>?1=1";
dataToServer(tr_01);
=======================================================================
자바단에서는
List rows = gav.getDataSetToList("input_01");
//List형으로 넘긴 값을 받고요
for(int i = 0 ; i < rows.size() ; i++){
//저장 로직 타는 부분입니다.
}
log로 자바단에서 입력되는 값을 보니
아래와 같습니다...
[{loginId=R100002, revkey=688, chst=CHST0005, JOB_TYPE_CODE=2, GAUCE_JOB_TYPE=INSERT},
{loginId=, revkey=, chst=, JOB_TYPE_CODE=2, GAUCE_JOB_TYPE=INSERT},
{loginId=R100002, revkey=691, chst=CHST0005, JOB_TYPE_CODE=2, GAUCE_JOB_TYPE=INSERT},
{loginId=, revkey=, chst=, JOB_TYPE_CODE=2, GAUCE_JOB_TYPE=INSERT},
{loginId=, revkey=, chst=, JOB_TYPE_CODE=2, GAUCE_JOB_TYPE=INSERT},
{loginId=R100002, revkey=688, chst=CHST0005, JOB_TYPE_CODE=2, GAUCE_JOB_TYPE=INSERT},
{loginId=, revkey=, chst=, JOB_TYPE_CODE=2, GAUCE_JOB_TYPE=INSERT},
{loginId=, revkey=, chst=, JOB_TYPE_CODE=2, GAUCE_JOB_TYPE=INSERT},
{loginId=, revkey=, chst=, JOB_TYPE_CODE=2, GAUCE_JOB_TYPE=INSERT},
{loginId=, revkey=, chst=, JOB_TYPE_CODE=2, GAUCE_JOB_TYPE=INSERT}]
선택된 값의 key 값은 전부 틀리지만 자바단에서 받아 들이는 값은
한개만 인식되고 있네요... 결국은 submit을 잘못 해 주고 있다는 건데...
다시 원점이네요... 알려주신데로 해 보았습니다만,
한번더 부탁드려 봅니다...
고생 많으십니다...
>컴포넌트의 경우 데이터셋에 데이터를 한번에 입력 후 for문이 끝난 후에 post하시기 바랍니다.
>Post시 변경된 데이터가 한번에 넘어가게 됩니다.
>
>ex)
>ds_02.SetDataHeader("xxx:STRING(10)");
>for(i=1; i<=ds_01.CountRow; i++){
> chk = ds_01.NameValue(i, 'chk');
> if(chk == '1'){
> //InsertRow는 지정한 index에 로우를 추가하는 메소드입니다. 순서대로 처리하게 하려면 Addrow를 사용하세요.
> //ds_02.InsertRow(i);
> ds_02.Addrow();
> ds_02.NameValue(i, "xxx") = ds_01.NameValue(i, "xxx");
> }else{
> //ds_02.InsertRow(1);
> ds_02.Addrow();
> //ds_01.RowPosition은 현재 DataSet의 focus가 지정된 상태값입니다. 값을 다시 한번 확인해보세요.
> ds_02.NameValue(1, "xxx") = ds_01.NameValue(ds_01.RowPosition, "xxx");
> }
>}
>
>tr_01.KeyValue = "JSP(I:input_01=ds_02)";
>tr_01.KeyName = "toinb_dataid4";
>
>tr_01.Action="<c:url value='/xxx/xxx.do'/?1=1";
>dataToServer(tr_01);
>
>>게시판을 이용해 주셔서 감사합니다.
>>다음양식에 맞게 입력해주세요.
>>
>>* 고객시스템명 :
>>* GAUCE 버전 : 4.0
>>* WAS 종류(WebLogic 등등) : Tomcat
>>* DB 종류 : MSSQL
>>* 문의 유형(질문/요청/참조) : CHECK BOX
>>* 내용 :
>>안녕하세요.
>>그리드에서 체크박스 기능을 구현하였습니다.
>>
>>체크된 값의 키 값만 서버에 submit을 할려고 합니다.
>>for문으로 통해 alert로 체크된 키값은 잘 표기 됩니다.
>>
>>정작 submit 할 때, for문을 한번만 수행하는데
>>
>>어떻게 해야 할지 모르겠네요...
>>
>>아래는 해당 jsscrript입니다.
>>================================================================================================
>>ds_02.SetDataHeader("xxx:STRING(10)");
>> for(i=1; i<=ds_01.CountRow; i++){
>> chk = ds_01.NameValue(i, 'chk');
>> if(chk == '1'){
>> alert("check!!");
>> ds_02.InsertRow(i);
>> ds_02.NameValue(i, "xxx") = ds_01.NameValue(i, "xxx");
>>
>> alert(ds_02.NameValue(i, "xxx"));
>>
>> tr_01.KeyValue = "JSP(I:input_01=ds_02)";
>> tr_01.KeyName = "toinb_dataid4";
>>
>> tr_01.Action="<c:url value='/xxx/xxx.do'/>?1=1";
>> dataToServer(tr_01);
>> }else{
>> alert("unCheck!!");
>> ds_02.InsertRow(1);
>> ds_02.NameValue(1, "xxx") = ds_01.NameValue(ds_01.RowPosition, "xxx");
>>
>> tr_01.KeyValue = "JSP(I:input_01=ds_02)";
>> tr_01.KeyName = "toinb_dataid4";
>>
>> tr_01.Action="<c:url value='/xxx/xxx.do'/>?1=1";
>> dataToServer(tr_01);
>> }
>> }
>>
>>action을 두번 태워야 하는거 같은데...
>>생각보다 잘 안되네요...
>