Wanna be Brilliant Full-Stack Developer

JQGRID #5 getGridParam과 setGridParam 차이 본문

Some Memos/JQGRID

JQGRID #5 getGridParam과 setGridParam 차이

Flashpacker 2023. 6. 2. 13:27
function org_reg_change_status() { //완료처리(수정)
    var data = $("#ord_reg_grid").jqGrid("getGridParam", "selarrrow");
    var gu5 = String.fromCharCode(5);
    var list = [];
    var completeList = [];

    for (var i = 0; i < data.length; i++) {
        list.push(data[i]);
        // 선택한 셀의 상태가 "완료"인지 확인
        var status = $("#ord_reg_grid").jqGrid("getCell", data[i], "status");
        if (status == "완료") {
            list.shift(data[i]);
            completeList.push(data[i]); //completeList에 상태가 완료인것들만 넣어줌
        }
    }

    var list2 = list.join(gu5);

    if (data.length == 0) {
        alert("완료처리할 발주를 선택하세요.");
        $('#ord_reg_grid').jqGrid('resetSelection');
        return false
    } else if (list.length == 0 && completeList.length > 0) {
        alert("이미 완료 상태인 발주는 완료처리할 수 없습니다.");
        $('#ord_reg_grid').jqGrid('resetSelection');
        return false;
    }

    if(list.length > 0 && completeList.length > 0) {
        if(confirm('이미 완료 상태인 발주는 완료처리할 수 없습니다. \n 진행중이거나 대기 상태인 발주를 완료처리하시겠습니까?') == false) {
            $('#ord_reg_grid').jqGrid('resetSelection');
            return false;
        }
    } else if (list.length > 0 && completeList.length == 0) {
        if(confirm("상태를 완료로 변경하시겠습니까?") === false) {
            $('#ord_reg_grid').jqGrid('resetSelection');
            return false;
        }
    }
    $.ajax({
            type: 'post',
            url: 'org_reg_change_status',
            data: { list: list2 },
            success: function (data) {
                org_reg_select();
                alert("상태가 완료로 변경되었습니다.");
            }
    });
}




2. `getGridParam`과 `setGridParam`의 차이:
   - `getGridParam`: 그리드의 특정 속성 값을 가져올 때 사용하는 메서드입니다. 
예를 들어, 그리드의 행 개수, 선택된 행의 ID 등을 가져올 수 있습니다.

   - `setGridParam`: 그리드의 특정 속성 값을 설정할 때 사용하는 메서드입니다. 
예를 들어, 그리드의 행 개수를 설정하거나, 행을 선택하거나 해제하는 등의 작업을 수행할 수 있습니다.


이 두 메서드는 그리드의 속성 값을 조작하고 조회할 때 사용되며, 코드에서 `getGridParam`을 사용하여 그리드의 속성 값을 가져오고 있습니다. 그리드의 속성은 그리드의 동작과 모양을 제어하는 데 사용되므로, 이러한 속성을 가져와서 조작함으로써 그리드의 동작을 제어할 수 있습니다.

예를 들어, `getGridParam`을 사용하여 그리드의 선택된 행의 ID를 가져오고, 
`setGridParam`을 사용하여 그리드의 선택을 해제할 수 있습니다. 
이를 통해 그리드에서 선택한 행을 가져오거나 선택을 해제할 수 있습니다.

`getGridParam`과 `setGridParam`은 그리드 라이브러리(JQGrid)의 API 메서드로서, 
그리드의 속성 값을 다양하게 조작할 수 있는 기능을 제공합니다.

 

 

위의 코드는 "완료처리(수정)"을 수행하는 함수인 `org_reg_change_status`를 나타냅니다. 아래는 코드의 로직에 대한 자세한 설명입니다:

1. 변수 및 배열 초기화:
   - `data`: 발주 그리드에서 선택된 행의 ID를 저장하는 배열
   - `gu5`: 문자열 형태의 구분자
   - `list`: 선택된 발주의 ID를 저장하는 배열
   - `completeList`: 상태가 "완료"인 발주의 ID를 저장하는 배열

2. 선택된 발주의 상태 확인 및 배열 채우기:
   - `for`문을 통해 선택된 발주의 ID를 순회합니다.
   - 각 발주의 상태를 가져와서 "완료"인지 확인합니다.
   - "완료" 상태인 경우 `completeList` 배열에 해당 발주의 ID를 추가하고, 그렇지 않은 경우 `list` 배열에 추가합니다.

3. 발주 선택 및 완료 상태 확인:
   - 발주가 선택되지 않은 경우와 모든 선택된 발주가 이미 "완료" 상태인 경우에 대한 조건문입니다.
   - 이 경우 각각 알림을 표시하고, 발주 그리드의 선택을 해제하고 함수 실행을 종료합니다.

4. 상태 변경 확인:
   - `list` 배열과 `completeList` 배열에 각각 요소가 있을 경우를 확인합니다.
   - 이미 "완료" 상태인 발주가 있으면 진행할지 여부를 확인하는 확인 대화상자를 표시합니다.
   - "완료" 상태인 발주가 없는 경우 상태를 완료로 변경할지 여부를 확인하는 확인 대화상자를 표시합니다.
   - 확인 대화상자의 결과에 따라 함수 실행을 종료할지, 상태 변경 요청을 수행할지 결정합니다.

5. 상태 변경 요청:
   - `$.ajax`를 통해 서버로 상태 변경 요청을 전송합니다.
   - 요청은 POST 방식으로 이루어지며, 변경할 발주 ID 목록인 `list2`를 데이터로 전송합니다.
   - 요청이 성공적으로 완료되면 `org_reg_select` 함수를 호출하여 발주 목록을 갱신하고, 완료 메시지를 표시합니다.

위의 로직은 다음과 같은 순서로 작동합니다:
1. 발주 그리드에서 선택된 행의 ID를 가져와서 `data` 배열에 저장합니다.
2. `for`문을 통해 선택된 발주의 ID를 순회합니다.
3. 각 발주의 상태를 가져와서 "완료"인지 확인합니다.
4. "완료" 상태인 발주의 ID는 `completeList` 배열에 저장하고, 그렇지 않은 발주는 `list` 배열에 저장합니다.
5. 발주 선택 여부와 완료 상태를 확인하여 알림을 표시

하고 함수 실행을 종료할 수 있습니다.
6. 선택된 발주에 대해 상태 변경을 진행할지 여부를 확인하는 알림을 표시합니다.
7. 확인 결과에 따라 함수 실행을 종료할지, 상태 변경 요청을 서버에 전송합니다.
8. 요청이 성공적으로 완료되면 발주 목록을 갱신하고 완료 메시지를 표시합니다.

이를 통해 함수는 발주의 선택과 상태 변경을 관리하며, 선택된 발주가 이미 "완료" 상태인 경우 또는 사용자의 확인을 통해 상태 변경을 처리합니다.

'Some Memos > JQGRID' 카테고리의 다른 글

JQGRID #4  (0) 2023.05.25
JQGRID #3  (0) 2023.05.24
JQGRID 메모  (0) 2023.03.28