From 208c39ed4f3642bb8592928d43be489cdc567ddd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9C=A0=EC=A7=80=EC=9D=B8?= Date: Wed, 5 Nov 2025 13:55:14 +0900 Subject: [PATCH] =?UTF-8?q?Kendo=20grid=20=ED=95=98=EB=8B=A8=20pager=20?= =?UTF-8?q?=ED=99=9C=EC=84=B1=ED=99=94=20=EB=B0=8F=20=EA=B8=B0=EB=8A=A5=20?= =?UTF-8?q?manageList=20-=20=EA=B2=80=EC=8A=A4=EB=93=B1=EB=A1=9D=EB=8C=80?= =?UTF-8?q?=EA=B8=B0=20=EB=AA=A9=EB=A1=9D=20complete=20-=20=EA=B2=80?= =?UTF-8?q?=EC=88=98=EB=93=B1=EB=A1=9D=EC=99=84=EB=A3=8C=20=EB=AA=A9?= =?UTF-8?q?=EB=A1=9D=20listReg=20-=20=EC=9E=85=EB=A0=A5=EC=A4=91=EC=9D=B8?= =?UTF-8?q?=ED=94=84=EB=A1=9C=EC=A0=9D=ED=8A=B8=20=ED=98=84=ED=99=A9=20hol?= =?UTF-8?q?eCoordinate=20-=20=EC=A2=8C=ED=91=9C=EC=88=98=EC=A0=95=20re=5Fn?= =?UTF-8?q?ame=20-=20=ED=94=84=EB=A1=9C=EC=A0=9D=ED=8A=B8=EB=AA=85=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/CompleteServiceImpl.java | 7 +- .../HoleCoordinateController.java | 28 ++++---- .../regi/listReg/ListRegController.java | 18 ++--- .../regi/manageList/ManageListController.java | 24 +++---- .../sqlmap/mapper/regi/manageList.xml | 8 +-- .../WEB-INF/views/web/manage/complete.jsp | 14 +++- .../WEB-INF/views/web/manage/hole_coord.jsp | 40 +++++++++-- .../webapp/WEB-INF/views/web/manage/list.jsp | 68 +++++++++++++++++-- .../WEB-INF/views/web/manage/list_reg.jsp | 33 +++++++-- .../WEB-INF/views/web/manage/re_name.jsp | 37 ++++++++-- 10 files changed, 205 insertions(+), 72 deletions(-) diff --git a/src/main/java/geoinfo/regi/complete/service/impl/CompleteServiceImpl.java b/src/main/java/geoinfo/regi/complete/service/impl/CompleteServiceImpl.java index 7b070d2b..cc607a89 100644 --- a/src/main/java/geoinfo/regi/complete/service/impl/CompleteServiceImpl.java +++ b/src/main/java/geoinfo/regi/complete/service/impl/CompleteServiceImpl.java @@ -120,15 +120,16 @@ public class CompleteServiceImpl implements CompleteService { params.put("sortDir", sortDir); } - + int total = MyUtil.getIntegerFromObject(selectCompleteItemsCnt(params)).intValue(); Long pageSize = MyUtil.getLongFromObject( params.get("pageSize") ); if( pageSize == null ) { - pageSize = 10l; +// pageSize = 10l; + pageSize = (long) total; // 25.11.05(YJI) Kendo grid pager 'All' 처리 } PaginationInfo paginationInfo = new PaginationInfo(); - paginationInfo.setRecordCountPerPage(10); + paginationInfo.setRecordCountPerPage(pageSize.intValue()); paginationInfo.setPageSize(pageSize.intValue()); paginationInfo.setTotalRecordCount( MyUtil.getIntegerFromObject(selectCompleteItemsCnt(params)).intValue() ); diff --git a/src/main/java/geoinfo/regi/holeCoordinate/HoleCoordinateController.java b/src/main/java/geoinfo/regi/holeCoordinate/HoleCoordinateController.java index 9713b509..0b31935f 100644 --- a/src/main/java/geoinfo/regi/holeCoordinate/HoleCoordinateController.java +++ b/src/main/java/geoinfo/regi/holeCoordinate/HoleCoordinateController.java @@ -101,13 +101,15 @@ public class HoleCoordinateController { @RequestMapping("/getHoleCoordList.do") @ResponseBody public Map getHoleCoordList(HttpServletRequest request, HttpServletResponse response, @RequestParam HashMap params) throws Exception { - - int page = params.get("page").toString() != null ? Integer.parseInt(params.get("page").toString()) : 1; - int pageSize = params.get("pageSize") != null ? Integer.parseInt((String)params.get("pageSize")) : 10; // 기본값 10 + int nCls = MyUtil.getIntegerFromObject(request.getSession().getAttribute("CLS")); + strUtil sUtil = new strUtil(); + WebUtil wUtil = new WebUtil(); + wUtil.topTabId = "manageCoordinate"; // 검수일때 tab 활성화 시켜주기 위해 + String loginUserId = String.valueOf(request.getSession().getAttribute("USERID")); // 정렬 필드/방향 처리 - String sortField = (String) params.get("sort[0][field]"); - String sortDir = (String) params.get("sort[0][dir]"); + String sortField = sUtil.checkNull(parseData.parseData((String)params.get("sortField"))); + String sortDir = sUtil.checkNull(parseData.parseData((String)params.get("sortDir"))); // 기본 정렬 지정 (없을 경우) if (sortField == null || sortField.isEmpty()) sortField = "datetime"; @@ -117,11 +119,6 @@ public class HoleCoordinateController { params.put("sortField", sortField); params.put("sortDir", sortDir); - int nCls = MyUtil.getIntegerFromObject(request.getSession().getAttribute("CLS")); - strUtil sUtil = new strUtil(); - WebUtil wUtil = new WebUtil(); - wUtil.topTabId = "manageCoordinate"; // 검수일때 tab 활성화 시켜주기 위해 - String loginUserId = String.valueOf(request.getSession().getAttribute("USERID")); // request String srchStartDate = sUtil.checkNull(parseData.parseData((String)params.get("startDate"))); String srchEndDate = sUtil.checkNull(parseData.parseData((String)params.get("endDate"))); @@ -130,15 +127,14 @@ public class HoleCoordinateController { String searchCreateName = sUtil.checkNull(parseData.parseData((String)params.get("searchCreateName"))); params.put("loginUserId", loginUserId); params.put("cls", nCls); + + int total = masterService.getDataListCount(params); + int page = params.get("page").toString() != null ? Integer.parseInt(params.get("page").toString()) : 1; + int pageSize = params.get("pageSize") != null ? Integer.parseInt((String)params.get("pageSize")) : total; // 기본값 10 params.put("startRow", ((page - 1) * pageSize) + 1); - if (page > 1) { - params.put("endRow", (((page - 1) * pageSize) + 1) + pageSize - 1); // startRow + pageSize - 1 - } else { - params.put("endRow", 10); - } + params.put("endRow", (((page - 1) * pageSize) + 1) + pageSize - 1); // startRow + pageSize - 1 List items = masterService.getDataListPaging(params); - int total = masterService.getDataListCount(params); Map result = new HashMap<>(); result.put("items", items); diff --git a/src/main/java/geoinfo/regi/listReg/ListRegController.java b/src/main/java/geoinfo/regi/listReg/ListRegController.java index 9c723860..3b90abc2 100644 --- a/src/main/java/geoinfo/regi/listReg/ListRegController.java +++ b/src/main/java/geoinfo/regi/listReg/ListRegController.java @@ -71,12 +71,9 @@ public class ListRegController { //request System.out.println("searchProjectName:"+request.getParameter("searchProjectName")); - int page = params.get("page").toString() != null ? Integer.parseInt(params.get("page").toString()) : 1; - int pageSize = params.get("pageSize") != null ? Integer.parseInt((String)params.get("pageSize")) : 10; // 기본값 10 - // 정렬 필드/방향 처리 - String sortField = (String) params.get("sort[0][field]"); - String sortDir = (String) params.get("sort[0][dir]"); + String sortField = sUtil.checkNull(parseData.parseData((String)params.get("sortField"))); + String sortDir = sUtil.checkNull(parseData.parseData((String)params.get("sortDir"))); // 기본 정렬 지정 (없을 경우) if (sortField == null || sortField.isEmpty()) sortField = "datetime"; @@ -85,16 +82,15 @@ public class ListRegController { // MyBatis에 넣을 때는 깔끔하게 키 이름 정리 params.put("sortField", sortField); params.put("sortDir", sortDir); + + int total = masterService.getRegListCount(params); + int page = params.get("page").toString() != null ? Integer.parseInt(params.get("page").toString()) : 1; + int pageSize = params.get("pageSize") != null ? Integer.parseInt((String)params.get("pageSize")) : total; // 기본값 10 params.put("startRow", ((page - 1) * pageSize) + 1); - if (page > 1) { - params.put("endRow", (((page - 1) * pageSize) + 1) + pageSize - 1); // startRow + pageSize - 1 - } else { - params.put("endRow", 10); - } + params.put("endRow", (((page - 1) * pageSize) + 1) + pageSize - 1); // startRow + pageSize - 1 //data정보 ArrayList result = masterService.getRegList(params); - int total = masterService.getRegListCount(params); HashMap resultMap = new HashMap(); resultMap.put("dataList1", result); diff --git a/src/main/java/geoinfo/regi/manageList/ManageListController.java b/src/main/java/geoinfo/regi/manageList/ManageListController.java index 60307bbc..cf8d4763 100644 --- a/src/main/java/geoinfo/regi/manageList/ManageListController.java +++ b/src/main/java/geoinfo/regi/manageList/ManageListController.java @@ -113,12 +113,12 @@ public class ManageListController { @ResponseBody public Map getManageList(HttpServletRequest request, HttpServletResponse response, @RequestParam HashMap params) throws Exception { - int page = params.get("page").toString() != null ? Integer.parseInt(params.get("page").toString()) : 1; - int pageSize = params.get("pageSize") != null ? Integer.parseInt((String)params.get("pageSize")) : 10; // 기본값 10 - + int nCls = MyUtil.getIntegerFromObject(request.getSession().getAttribute("CLS")); + strUtil sUtil = new strUtil(); + WebUtil wUtil = new WebUtil(); // 정렬 필드/방향 처리 - String sortField = (String) params.get("sort[0][field]"); - String sortDir = (String) params.get("sort[0][dir]"); + String sortField = sUtil.checkNull(parseData.parseData((String)params.get("sortField"))); + String sortDir = sUtil.checkNull(parseData.parseData((String)params.get("sortDir"))); // 기본 정렬 지정 (없을 경우) if (sortField == null || sortField.isEmpty()) sortField = "datetime"; @@ -128,9 +128,6 @@ public class ManageListController { params.put("sortField", sortField); params.put("sortDir", sortDir); - int nCls = MyUtil.getIntegerFromObject(request.getSession().getAttribute("CLS")); - strUtil sUtil = new strUtil(); - WebUtil wUtil = new WebUtil(); wUtil.topTabId = "manageCoordinate"; // 검수일때 tab 활성화 시켜주기 위해 String loginUserId = String.valueOf(request.getSession().getAttribute("USERID")); // requestString srchReportType = sUtil.checkNull(parseData.parseData((String)params.get("searchReportType"))); @@ -142,15 +139,14 @@ public class ManageListController { params.put("loginUserId", loginUserId); params.put("cls", nCls); + + int total = masterService.getDataListCount(params); + int page = params.get("page").toString() != null ? Integer.parseInt(params.get("page").toString()) : 1; + int pageSize = params.get("pageSize") != null ? Integer.parseInt((String)params.get("pageSize")) : total; // 기본값 10 params.put("startRow", ((page - 1) * pageSize) + 1); - if (page > 1) { - params.put("endRow", (((page - 1) * pageSize) + 1) + pageSize - 1); // startRow + pageSize - 1 - } else { - params.put("endRow", 10); - } + params.put("endRow", (((page - 1) * pageSize) + 1) + pageSize - 1); // startRow + pageSize - 1 List items = masterService.getDataListPaging(params); - int total = masterService.getDataListCount(params); Map result = new HashMap<>(); result.put("items", items); diff --git a/src/main/resources/egovframework/sqlmap/mapper/regi/manageList.xml b/src/main/resources/egovframework/sqlmap/mapper/regi/manageList.xml index ee8f6316..73d4d317 100644 --- a/src/main/resources/egovframework/sqlmap/mapper/regi/manageList.xml +++ b/src/main/resources/egovframework/sqlmap/mapper/regi/manageList.xml @@ -190,11 +190,11 @@ - T.PROJECT_NAME ASC + T.PROJECT_NAME ASC, DATETIME ASC, OB.MODIFY_CALL_DATE ASC - T.PROJECT_NAME DESC + T.PROJECT_NAME DESC, DATETIME ASC, OB.MODIFY_CALL_DATE ASC @@ -208,11 +208,11 @@ - T.DATETIME ASC + T.DATETIME ASC, OB.MODIFY_CALL_DATE ASC - T.DATETIME DESC + T.DATETIME DESC, OB.MODIFY_CALL_DATE ASC diff --git a/src/main/webapp/WEB-INF/views/web/manage/complete.jsp b/src/main/webapp/WEB-INF/views/web/manage/complete.jsp index e1d854cf..14277f44 100644 --- a/src/main/webapp/WEB-INF/views/web/manage/complete.jsp +++ b/src/main/webapp/WEB-INF/views/web/manage/complete.jsp @@ -247,7 +247,9 @@ function kendoGrid() { searchUserName: searchUserName, searchCreateName: searchCreateName, // Kendo UI가 전달하는 정렬, 페이징 정보 등을 options.data에서 가져와 추가 - sort: options.data.sort + sort: options.data.sort , + page: options.data.page, // ✅ Kendo가 현재 페이지 전달 + pageSize: options.data.pageSize, // ✅ Kendo가 현재 페이지 크기 전달 },               contentType: 'application/json',               dataType: "json", @@ -277,7 +279,15 @@ function kendoGrid() { kendoJQuery("#grid_type_1").kendoGrid({ dataSource: dataSource, columns: [ - { field: "rowNumber", width: 50, title: "순번", template: "" }, +// { field: "rowNumber", width: 50, title: "순번", template: "" }, + { + field: "rnk", + width: 50, + title: "순번", + template: function(data) { + return data.rnk ? parseInt(data.rnk) : ""; + } + }, { field: "projectName", width: "auto", diff --git a/src/main/webapp/WEB-INF/views/web/manage/hole_coord.jsp b/src/main/webapp/WEB-INF/views/web/manage/hole_coord.jsp index c2ce6595..9b2e58ce 100644 --- a/src/main/webapp/WEB-INF/views/web/manage/hole_coord.jsp +++ b/src/main/webapp/WEB-INF/views/web/manage/hole_coord.jsp @@ -161,15 +161,34 @@ function reloadGrid() { url: "/getHoleCoordList.do", dataType: "json", type: "POST", - data: function() { +// data: function() { +// var ds = this; // DataSource +// return { +// startDate: $("#startDate").val(), +// endDate: $("#endDate").val(), +// searchProjectName: $("#searchProjectName").val(), +// searchUserName: $("#searchUserName").val(), +// searchCreateName: $("#searchCreateName").val(), +// }; +// } + }, + parameterMap: function(options, operation) { + if (operation === "read") { + // 정렬 정보 처리 추가 + var sortField = options.sort && options.sort[0] ? options.sort[0].field : null; + var sortDir = options.sort && options.sort[0] ? options.sort[0].dir : null; + return { - startDate: $("#startDate").val(), - endDate: $("#endDate").val(), searchProjectName: $("#searchProjectName").val(), + searchProjectCode: $("#searchProjectCode").val(), searchUserName: $("#searchUserName").val(), + searchHistSeq: $("#searchHistSeq").val(), searchCreateName: $("#searchCreateName").val(), - page: 1, - pageSize: 10 + searchState: $("#searchState").val(), + page: options.page, // ✅ Kendo가 현재 페이지 전달 + pageSize: options.pageSize, // ✅ Kendo가 현재 페이지 크기 전달 + sortField: sortField, // 정렬 필드 + sortDir: sortDir // 정렬 방향 }; } } @@ -193,8 +212,15 @@ function reloadGrid() { pageSize: 10 }, columns: [ - - { field: "rowNumber", width: 50, title: "순번", template: "", sortable: false }, +// { field: "rowNumber", width: 50, title: "순번", template: "", sortable: false }, + { + field: "rn", + width: 50, + title: "순번", + template: function(data) { + return data.rn ? parseInt(data.rn) : "0"; + } + }, { field: "projectName", width: 262, diff --git a/src/main/webapp/WEB-INF/views/web/manage/list.jsp b/src/main/webapp/WEB-INF/views/web/manage/list.jsp index f2e4e8f6..e8b0ada6 100644 --- a/src/main/webapp/WEB-INF/views/web/manage/list.jsp +++ b/src/main/webapp/WEB-INF/views/web/manage/list.jsp @@ -363,7 +363,25 @@ function reloadGrid() { url: "/getManageList.do", dataType: "json", type: "POST", - data: function() { +// data: function() { +// var ds = this; // DataSource +// return { +// searchProjectName: $("#searchProjectName").val(), +// searchProjectCode: $("#searchProjectCode").val(), +// searchUserName: $("#searchUserName").val(), +// searchHistSeq: $("#searchHistSeq").val(), +// searchCreateName: $("#searchCreateName").val(), +// searchState: $("#searchState").val(), +// page: ds.page(), // ✅ 현재 페이지 +// pageSize: ds.pageSize() // ✅ 현재 페이지당 개수 +// }; +// } + }, + parameterMap: function(options, operation) { + var sortField = options.sort && options.sort[0] ? options.sort[0].field : null; + var sortDir = options.sort && options.sort[0] ? options.sort[0].dir : null; + + if (operation === "read") { return { searchProjectName: $("#searchProjectName").val(), searchProjectCode: $("#searchProjectCode").val(), @@ -371,15 +389,45 @@ function reloadGrid() { searchHistSeq: $("#searchHistSeq").val(), searchCreateName: $("#searchCreateName").val(), searchState: $("#searchState").val(), - page: 1, - pageSize: 10 + page: options.page, // ✅ Kendo가 현재 페이지 전달 + pageSize: options.pageSize, // ✅ Kendo가 현재 페이지 크기 전달 + sortField: sortField, // 정렬 필드 + sortDir: sortDir // 정렬 방향 }; } } }, schema: { data: "items", // 서버에서 실제 데이터 Array key - total: "total" // 서버에서 전체 개수 key + total: "total", // 서버에서 전체 개수 key, + model: { + fields: { + rn: { type: "number" }, // 순번 + classCode: { type: "string" }, + projectCode: { type: "string" }, + reportType: { type: "string" }, + reportTypeName: { type: "string" }, + projectName: { type: "string" }, + userid: { type: "string" }, + userName: { type: "string" }, + state: { type: "string" }, + stateName: { type: "string" }, + checkuserid: { type: "string" }, + datetime: { type: "string" }, // "YYYY-MM-DD HH:mm:ss" 형식 + regFinDate: { type: "string" }, + modifyCallDate: { type: "string" }, + modifyFinDate: { type: "string" }, + checkstart: { type: "string" }, + checkok: { type: "string" }, + ins: { type: "string" }, + authins: { type: "string" }, + map: { type: "string" }, + modifycall: { type: "string" }, + cursor: { type: "string" }, + histSeq: { type: "number" }, + expertFile: { type: "string" } + } + } }, serverPaging: true, serverSorting: true, @@ -396,7 +444,15 @@ function reloadGrid() { pageSize: 10 }, columns: [ - { field: "rowNumber", width: 50, title: "순번", sortable: false, template: "" }, +// { field: "rowNumber", width: 50, title: "순번", sortable: false, template: "" }, + { + field: "rn", + width: 50, + title: "순번", + template: function(data) { + return data.rn ? parseInt(data.rn) : "0"; + } + }, { field: "projectName", width: "auto", @@ -505,7 +561,7 @@ function reloadGrid() { refresh: false, pageSizes: true, pageSize: 10, - //buttonCount: 10, + buttonCount: 10, input: true, numeric: false, }, diff --git a/src/main/webapp/WEB-INF/views/web/manage/list_reg.jsp b/src/main/webapp/WEB-INF/views/web/manage/list_reg.jsp index 38bc8392..868bd3f4 100644 --- a/src/main/webapp/WEB-INF/views/web/manage/list_reg.jsp +++ b/src/main/webapp/WEB-INF/views/web/manage/list_reg.jsp @@ -231,12 +231,29 @@ function reloadGrid() { url: "/list_reg_jsondata.do", dataType: "json", type: "POST", - data: function() { +// data: function() { +// var ds = this; // DataSource +// return { +// searchProjectName: $("#searchProjectName").val(), +// searchUserName: $("#searchUserName").val(), +// page: ds.page(), // ✅ 현재 페이지 +// pageSize: ds.pageSize() // ✅ 현재 페이지당 개수 +// }; +// } + }, + parameterMap: function(options, operation) { + if (operation === "read") { + // 정렬 정보 처리 추가 + var sortField = options.sort && options.sort[0] ? options.sort[0].field : null; + var sortDir = options.sort && options.sort[0] ? options.sort[0].dir : null; + return { searchProjectName: $("#searchProjectName").val(), searchUserName: $("#searchUserName").val(), - page: 1, - pageSize: 10 + page: options.page, // ✅ Kendo가 현재 페이지 전달 + pageSize: options.pageSize, // ✅ Kendo가 현재 페이지 크기 전달 + sortField: sortField, // 정렬 필드 + sortDir: sortDir // 정렬 방향 }; } } @@ -260,7 +277,15 @@ function reloadGrid() { pageSize: 10 }, columns: [ - { field: "rowNumber", width: 50, title: "순번", template: "" }, +// { field: "rowNumber", width: 50, title: "순번", template: "" }, + { + field: "rn", + width: 50, + title: "순번", + template: function(data) { + return data.rn ? parseInt(data.rn) : "0"; + } + }, { field: "projectName", title: "프로젝트명", diff --git a/src/main/webapp/WEB-INF/views/web/manage/re_name.jsp b/src/main/webapp/WEB-INF/views/web/manage/re_name.jsp index 3c6697ec..5201755b 100644 --- a/src/main/webapp/WEB-INF/views/web/manage/re_name.jsp +++ b/src/main/webapp/WEB-INF/views/web/manage/re_name.jsp @@ -191,15 +191,35 @@ function reloadGrid() { url: "/getHoleCoordList.do", dataType: "json", type: "POST", - data: function() { +// data: function() { +// var ds = this; // DataSource +// return { +// startDate: $("#startDate").val(), +// endDate: $("#endDate").val(), +// searchProjectName: $("#searchProjectName").val(), +// searchUserName: $("#searchUserName").val(), +// searchCreateName: $("#searchCreateName").val(), +// page: ds.page(), // ✅ 현재 페이지 +// pageSize: ds.pageSize() // ✅ 현재 페이지당 개수 +// }; +// } + }, + parameterMap: function(options, operation) { + if (operation === "read") { + // 정렬 정보 처리 추가 + var sortField = options.sort && options.sort[0] ? options.sort[0].field : null; + var sortDir = options.sort && options.sort[0] ? options.sort[0].dir : null; + return { startDate: $("#startDate").val(), endDate: $("#endDate").val(), searchProjectName: $("#searchProjectName").val(), searchUserName: $("#searchUserName").val(), searchCreateName: $("#searchCreateName").val(), - page: 1, - pageSize: 10 + page: options.page, // ✅ Kendo가 현재 페이지 전달 + pageSize: options.pageSize, // ✅ Kendo가 현재 페이지 크기 전달 + sortField: sortField, // 정렬 필드 + sortDir: sortDir // 정렬 방향 }; } } @@ -223,8 +243,15 @@ function reloadGrid() { pageSize: 10 }, columns: [ - - { field: "rowNumber", width: 50, title: "순번", template: "", sortable: false }, +// { field: "rowNumber", width: 50, title: "순번", template: "", sortable: false }, + { + field: "rn", + width: 50, + title: "순번", + template: function(data) { + return data.rn ? parseInt(data.rn) : "0"; + } + }, { field: "projectName", width: 262,