2011-01-17 4 views

답변

3

나는이 질문이 일종의 먼지라는 것을 알고 있지만, 최근이 기능에 대한 필요성이 있었고, 나는 그것을 훨씬 더 깨끗한 방법으로 생각했다.

각 확인란에 이벤트를 첨부하는 대신 jqGrid의 onSelectRowonSelectAll 이벤트를 사용하지 않는 이유는 무엇입니까? 행이 선택되면 선택된 행의 목록에이 행 (ID 기반)이 포함되어 있는지 확인합니다. 목록에 없으면 선택되고 더 이상 선택되지 않은 경우 제거하십시오. 모든 행이 선택되면 행을 반복합니다.

var $grid = jQuery("#myGrid"); 
var updateIdsOfSelectedRows = function (id, isSelected) { 
    var contains = idsOfSelectedRows.contains(id); 
    if (!isSelected && contains) { 
     for(var i=0; i<idsOfSelectedRows.length; i++) { 
      if(idsOfSelectedRows[i] == id) { 
       idsOfSelectedRows.splice(i, 1); 
       break; 
      } 
     } 
    } 
    else if (!contains) { 
     idsOfSelectedRows.push(id); 
    } 
}; 

$grid.jqGrid({ 
    .... 
    onSelectRow: function(rowid, status){ 
     updateIdsOfSelectedRows(rowid, status); 
    }, 
    onSelectAll: function (aRowids, status) { 
     var i, count, id; 
     for (i = 0, count = aRowids.length; i < count; i++) { 
      id = aRowids[i]; 
      updateIdsOfSelectedRows(id, status); 
     } 
    }, 
    .... 
)}; 

다른 사람들이 솔루션을 찾는 데 도움이되기를 바랍니다.

0

한 페이지에서 일부 행을 선택한 다음 다른 페이지로 이동하고 더 많은 행을 선택하고 해당 선택 항목을 모두 유지하려고한다고 가정합니다.

각 확인란에서 선택 이벤트를 처리해야합니다. 이벤트 처리기를 each $("#cb_my_grid")에 연결하고 선택한 항목의 배열을 유지합니다. 그런 다음 데이터가 필요할 때 (아마 페이지가 제출 될 때) 배열의 값을 제출할 수 있습니다.

관련 문제