게시판을 이용해 주셔서 감사합니다.
다음양식에 맞게 입력해주세요.
**필수입력사항**
* 고객(업체)명 : LG 전자
* 제품 버전 : Gauce 4.0
* 문의 유형(질문/요청/참조) : 이미지 데이터 셋 출력 오류 문의
* 내용 :
안녕하세요.
| 부품번호 | Image | 생성일 | 생성자 | 파일경로 | 파일명 |
위와 같이 그리드를 셋팅후, Imgage 컬럼에는 각 Row 마다 업로드한 Image (Jpg, bmp) 파일을 보여 주도록 만들었습니다.
검색 Dataset이 완료 된 후, 각 Row 마다 업로드한 이미지 경로를 찾아가서 Image DataSet에 각 이미지를 셋팅하도록 되어 있습니다.
검색 조건에 따라 Row가 20건 정도 일 때에는 이미지 컬럼에 이미지가 바인딩되어 잘 표시되는데, 대략 30~40 Row 이상의 이미지들을 Image Dataset에 넣어 가우스 그리드에 표시할 경우, 이미지가 바인딩이 안됩니다. 그냥 공백으로 나옵니다.
확인 부탁드립니다.
수고하십시오.
<script language=JavaScript for=ds_input event=OnLoadCompleted(rowCnt)>
for(var i=1; i<=ds_input.CountRow; i++) {
// File이 있는 것만 이미지 표시함.
if (ds_input.NameValue(i, "fileName") != "") {
partNoList += ds_input.NameValue(i, "partNo") + "@";
fileNameList += ds_input.NameValue(i, "fileName") + "@";
filedir += ds_input.NameValue(i, "fileDir") + "@";
var condition = "?partList=" + partNoList;
condition += "&fileNameList=" + fileNameList;
condition += "&filedir=" + filedir;
ds_img.DataID = "P_WM_MD_009_IMG_SET.jsp" + condition;
ds_img.Reset();
}
}
</script>
=========*P_WM_MD_009_IMG_SET.jsp 내용====================================================
<%@ page import="javax.servlet.*,java.io.*,java.util.*,java.text.*,com.gauce.*,com.gauce.io.*,com.gauce.log.*,com.gauce.common.*"%>
<%
ServiceLoader loader = new ServiceLoader(request, response);
GauceService service = loader.newService();
File f = null;
FileInputStream fis = null;
String partList = request.getParameter("partList");
String fileNameList = request.getParameter("fileNameList");
String filedir = request.getParameter("filedir");
try {
response.setContentType("application/octet-stream;charset=ISO-8859-1");
GauceResponse res = service.getGauceResponse();
GauceDataSet ds = new GauceDataSet();
res.enableFirstRow(ds);
File fImage = null;
FileInputStream fisImage = null;
ds.addDataColumn(new GauceDataColumn("img",GauceDataColumn.TB_BLOB));
ds.addDataColumn(new GauceDataColumn("img_id",GauceDataColumn.TB_STRING));
ds.addDataColumn(new GauceDataColumn("img_size",GauceDataColumn.TB_INT));
//String imgDir = "D:/AADEV_LGE/workspace/PROTOTYPE/war/upload/DFZ/WM/MD/20140801/";
String[] imgDir = filedir.split("@");
String[] fileName = fileNameList.split("@");
String[] partNo = partList.split("@");
for ( int i=0; i<fileName.length; i++ ) {
if (!fileName[i].equals("")) {
f = new File(imgDir[i] + fileName[i]);
fis = new FileInputStream(f);
GauceDataRow row = ds.newDataRow();
row.addColumnValue(fis);
row.addColumnValue(partNo[i]);
row.addColumnValue(f.length());
ds.addDataRow(row);
}
}
ds.flush();
res.flush();
res.commit();
res.close();
if (fis != null) {
fis.close();
}
//loader.restoreService(service);
} catch (Exception e) {
e.printStackTrace();
}
%>
말씀하신대로 ds_img.reset(); > OnLoadCompleted(ds_img) > ds_input.reset(); 해보았는데,
이미지가 바인딩 되다가 중간에 익스플로러 오류가 납니다.
그러면서 익스플로러를 다시 여네요.
계속요..
문제 서명:
문제 이벤트 이름: BEX
응용 프로그램 이름: iexplore.exe
응용 프로그램 버전: 8.0.7601.18571
응용 프로그램 타임스탬프: 53eee2cc
오류 모듈 이름: StackHash_0a9e
오류 모듈 버전: 0.0.0.0
오류 모듈 타임스탬프: 00000000
예외 오프셋: 002f0033
예외 코드: c0000005
예외 데이터: 00000008
OS 버전: 6.1.7601.2.1.0.256.1
로캘 ID: 1042
추가 정보 1: 0a9e
추가 정보 2: 0a9e372d3b4ad19135b953a78882e789
추가 정보 3: 0a9e
추가 정보 4: 0a9e372d3b4ad19135b953a78882e789
아래 소스에서 "완료" 라는 메세지가 뜨지 않습니다.
예제 소스 부탁드립니다.
* <script language=JavaScript for=ds_img event=OnLoadError()>
alert("Version : " + ds_img.Version + " \n Error Code = " + ds_img.ErrorCode + "\n" + "Error Message = " + ds_img.ErrorMsg);
</script>
여기에서 에러 메세지가 뜨는데,
Version : 2,0,1,10
Error Code = 0
Error Message = The version is not supported or the data are not correct.
20건 정도의 이미지가 나오는걸 봐서는 이건 버전 문제 인지요?
<script language=JavaScript for=ds_inputForImg event=OnLoadCompleted(rowCnt)>
var partNoList = "";
var fileNameList = "";
var filedir = "";
for(var i=1; i<=ds_inputForImg.CountRow; i++) {
// File이 있는 것만 이미지 표시함.
if (ds_inputForImg.NameValue(i, "fileName") != "") {
partNoList += ds_inputForImg.NameValue(i, "partNo") ;
fileNameList += ds_inputForImg.NameValue(i, "fileName");
filedir += ds_inputForImg.NameValue(i, "fileDir") ;
var condition = "?partList=" + partNoList;
condition += "&fileNameList=" + fileNameList;
condition += "&filedir=" + filedir;
ds_img.DataID = "P_WM_MD_009_IMG_SET.jsp" + condition;
ds_img.Reset();
}
}
</script>
<script language=JavaScript for=ds_img event=OnLoadCompleted(rowcnt)>
alert("완료");
</script>
|
구조가 잘못되어 있습니다.
이미지 데이터셋을 먼저 조회 후 실 데이터를 조회하도록 수정하시기 바랍니다.
기존 : ds_input.reset(); > OnLoadCompleted(ds_input) > ds_img.reset();
수정 : ds_img.reset(); > OnLoadCompleted(ds_img) > ds_input.reset();
감사합니다.