복붙노트

[JQUERY] JQGrid - 저장 확인란을 선택한 상태로 저장합니다

JQUERY

JQGrid - 저장 확인란을 선택한 상태로 저장합니다

해결법


  1. 1.대답의 첫 번째 부분에는 귀하의 질문에 대한 답변이 들어 있습니다. 여기에서 찾을 수있는 데모의 조금 개선 된 버전.

    대답의 첫 번째 부분에는 귀하의 질문에 대한 답변이 들어 있습니다. 여기에서 찾을 수있는 데모의 조금 개선 된 버전.

    "MultiSelect"열로 정렬 할 필요가없는 경우 데모는 필요한 것을 수행합니다. 데모에 대한 작은 설명 : "MultiSelect"열 위의 확인란은 현재 페이지에서만 모든 행을 선택 / 선택 취소합니다. 다른 동작을 원한다면 코드는 더욱 간단합니다. 나는 그리드를로드하여 3 개의 아이템의 데모 선택에 포함되었습니다. 두 번째 페이지에서 두 항목을 선택하고 두 번째 페이지의 한 항목을 선택합니다. 어떤 상황에서는 행동이 흥미로울 수 있습니다. 당신이 이것을 필요로하지 않으면 idsofselectedrows = [ "8", "9", "10"] 라인을 주석해야합니다.

    아래에서 데모 코드의 가장 중요한 부분을 찾을 수 있습니다.

    var $grid = $("#list"), idsOfSelectedRows = [],
        updateIdsOfSelectedRows = function (id, isSelected) {
            var index = $.inArray(id, idsOfSelectedRows);
            if (!isSelected && index >= 0) {
                idsOfSelectedRows.splice(index, 1); // remove id from the list
            } else if (index < 0) {
                idsOfSelectedRows.push(id);
            }
        };
    
    // initialize selection
    idsOfSelectedRows = ["8", "9", "10"];
    
    $grid.jqGrid({
        datatype: 'local',
        // ... other parameters
        multiselect: true,
        onSelectRow: updateIdsOfSelectedRows,
        onSelectAll: function (aRowids, isSelected) {
            var i, count, id;
            for (i = 0, count = aRowids.length; i < count; i++) {
                id = aRowids[i];
                updateIdsOfSelectedRows(id, isSelected);
            }
        },
        loadComplete: function () {
            var $this = $(this), i, count;
            for (i = 0, count = idsOfSelectedRows.length; i < count; i++) {
                $this.jqGrid('setSelection', idsOfSelectedRows[i], false);
            }
        }
    });
    

    idsofselectedrows를 jqgrid의 추가 매개 변수로 보유 할 수있는 경우를 원한다면 현재 JQGrid 매개 변수의 유효성 검사가 없으며 거기에서 확장 할 수 있습니다. 이점은 해당 JQGRID와 함께 idsofselectedrows의 지속성이 있습니다.

    업데이트 됨 : JQGrid의 무료 JQGrid 포크는 다중 크기를 지원합니다 : 멀티 셀렉트와 결합 할 수있는 true 옵션 : true 옵션. 이렇게하면 많은 페이지에 걸쳐 매개 변수 selearrow (선택한 행의 ID 목록)를 보유 할 수 있습니다. 기본적으로 jqgrid는 페이징 중에 배열 seLarRROW를 재설정하지만 사용량 다중 값의 경우 : true, multiSelect : true는 그렇게 재설정하지 않습니다. 또한 페이지 빌드 동안 SELARRROW 어레이에서 모든 행을 미리 선택합니다. 따라서 하나의 항목의 모든 ROWID가있는 SELARRROW 배열을 채우는 경우 (모든 페이지를 통해 모든 행) 행이 선택됩니다. 사용자는 여전히 일부 행을 선택 취소 할 수 있으며 JQGrid는 사용자가 변경 한 내용을 변경하지 않습니다.

    답변을 위해 생성 된 데모는 다중 값의 사용법을 보여줍니다. 무료 JQGrid에서 TRUE입니다. 또 다른 답변은 무료 jqgrid의 곧 다른 새로운 옵션을 설명합니다 : multiSelectPosition : multiSelect checkbox의 열을 오른쪽, multiSelectionposition : "none"으로 멀티셀렉트 기능을 사용하여 멀티 셀렉트 열과 hasmultiselectcheckbox 콜백없이 multiSelect 기능을 사용할 수있는 "none" JQGrid의 모든 행에 있지 않은 MultiSelect 체크 박스를 만드는 데 사용할 수 있습니다.

  2. from https://stackoverflow.com/questions/8172186/jqgrid-saving-checkbox-selected-state by cc-by-sa and MIT license