두 그리드 목록 비교 후 팝업
1. 비교할 그리드 체크 박스 선택
2. 비교분석 버튼 클릭
3. 비교 데이터 팝업 화면 출력
화면
- 메인화면

- 팝업화면

소스코드
[jsp] 저장버튼 호출 함수
/* 비교분석 팝업 호출 */
function showComparePopup(){
var items = [];
$.each(grid.data.serialize(),function(index,item){
if(item.ROW_CHK){
items.push(item.BM_KIND_SEQ);
}
});
if(items.length < 2){
alert('<spring:message code="message.select.item.MoreThanTwo"/>');
return false;
}
var url = 'popupBmResultView.do';
var param = {'BM_KIND_SEQ_LIST':items};
var width = 1024;
var height = 780;
show_popup(url,'popupBmResultView',width,height,param);
}
[java] controller
@RequestMapping("/popupBmResultView")
public String popupBmResultView(HttpServletRequest request, ModelMap model) throws Exception{
return bmService.popupBmResultView(request, model);
}
[java] service
public String popupBmItemView(HttpServletRequest request, ModelMap model) throws Exception;
[java] serviceimpl
@Override
public String popupBmResultView(HttpServletRequest request, ModelMap model) throws Exception {
String tmp = request.getParameter("BM_KIND_SEQ_LIST");
String BM_KIND_SEQ_LIST[] = tmp.split(",");
JSONObject param = new JSONObject();
param.put("LANG", SessionUtil.getLangcode());
param.put("BM_KIND_SEQ_LIST", BM_KIND_SEQ_LIST);
List<JSONObject> list = bmMapper.selectBmKindList(param);
JSONArray addColumns = new JSONArray();
for(JSONObject item : list) {
String text = item.getString("MODEL_NAME")+" / "+item.getString("YY_SERIES_NM");
JSONObject cols = new JSONObject();
JSONArray header = new JSONArray();
JSONObject headerItem = new JSONObject();
headerItem.put("text", text);
header.add(headerItem);
cols.put("width", 250);
cols.put("id", item.getString("BM_KIND_SEQ"));
cols.put("header", header);
cols.put("type", "string");
cols.put("resizable", true);
cols.put("sortable", false);
addColumns.add(cols);
}
model.addAttribute("GRID_COL_LIST", addColumns);
model.addAttribute("menuname", commonService.getPopupMenuName(request));
return "benchmark/popupBmResultView";
}
- foreach문을 통해서 list에서 원하는 데이터 뽑아낸다.
- GRID_COL_LIST
[ {"width": 250,"id": "13",
"header": [{"text": "AGM70 L3 / 21MY"}],"type": "string","resizable": true,"sortable": false},
{"width": 250,"id": "14",
"header": [{"text": "AGM80 L4 / 21MY",}],"type": "string","resizable": true, sortable": false}]
[data] List< JSONObject > list
[{
"RNO": 1,
"BM_KIND_SEQ": 13,
"MODEL_NAME": "AGM70 L3",
"PROD_COMP": "0000004148",
"PROD_COMP_NM": "Clarios",
"SALE_AREA_CD": "0000002430",
"SALE_AREA_NM": "미국",
"PROD_LOT": "2391040212831879",
"YY_SERIES": "0000002480",
"YY_SERIES_NM": "21MY",
"PRODUCT_TYPE_CD": "0000004144",
"PRODUCT_TYPE_NM": "AGM"
}, {
"RNO": 2,
"BM_KIND_SEQ": 14,
"MODEL_NAME": "AGM80 L4",
"PROD_COMP": "0000004148",
"PROD_COMP_NM": "Clarios",
"SALE_AREA_CD": "0000002430",
"SALE_AREA_NM": "미국",
"YY_SERIES": "0000002480",
"YY_SERIES_NM": "21MY",
"PRODUCT_TYPE_CD": "0000004144",
"PRODUCT_TYPE_NM": "AGM"
}]
[xml]
<select id="selectBmKindList" parameterType="json" resultType="json">
SELECT ROWNUM AS RNO, B.*
FROM ( SELECT A.BM_KIND_SEQ
,A.MODEL_NAME
,A.PROD_COMP
,PREMIER_SYS.GET_ITGR_CODE_NAME(A.PROD_COMP, #{LANG}) AS PROD_COMP_NM
,A.SALE_AREA_CD
,PREMIER_SYS.GET_ITGR_CODE_NAME(A.SALE_AREA_CD, #{LANG}) AS SALE_AREA_NM
,A.PROD_LOT
,A.YY_SERIES
,PREMIER_SYS.GET_ITGR_CODE_NAME(A.YY_SERIES, #{LANG}) AS YY_SERIES_NM
,A.PRODUCT_TYPE_CD
,PREMIER_SYS.GET_ITGR_CODE_NAME(A.PRODUCT_TYPE_CD, #{LANG}) AS PRODUCT_TYPE_NM
FROM PDM_BM_KIND A
WHERE 1=1
<if test="BM_KIND_SEQ != null and BM_KIND_SEQ != ''">
AND A.BM_KIND_SEQ = #{BM_KIND_SEQ}
</if>
<if test="BM_KIND_SEQ_LIST != null">
AND A.BM_KIND_SEQ IN
<foreach collection="BM_KIND_SEQ_LIST" item="ITEM" open="(" close=")" separator="," index="index">
#{ITEM}
</foreach>
</if>
ORDER BY 2,3 ) B
</select>
Mybatis - foreach
