2010-05-19 4 views

답변

7

행 편집을 위해 "인라인 편집"이라는 이름을 사용하는 것이 좋습니다. 이 방법의 가장 큰 장점은 매우 직관적이며 사용자입니다. 데모 페이지 http://trirand.com/blog/jqgrid/jqgrid.html에서 어떻게 작동하는지 확인할 수 있습니다. 이 데모 "행 편집"을 선택한 다음 왼쪽 트리 부분에서 "이벤트 사용"또는 "입력 유형"을 선택하십시오. 이 메서드를 사용하면 선택한 행을 이벤트 핸들 onSelectRow 또는 ondblClickRow의 내부에서 편집 할 수 있는지 여부를 사용자 정의 검증을 구현할 수 있습니다. 편집을 허용하면 editRow jqGrid 메서드를 호출합니다. 이 메서드는 편집 가능한 모든 열에 대한 입력 컨트롤을 만들고 사용자는 자연스럽게 행 값을 수정할 수 있습니다. 사용자가 "enter"키를 누르거나 "esc"키를 누르면 취소됩니다.

개인적으로 ondblClickRow 이벤트 처리기 내부에서 editRow 메서드 호출을 구현하는 것을 선호합니다. 따라서 사용자는 평소와 같이 행을 계속 선택하고 행 편집에 대해 두 번 클릭 할 수 있습니다. 의사 코드는 다음과 같이 표시됩니다.

var lastSel = -1; 
var isRowEditable = function (id) { 
    // implement your criteria here 
    return true; 
}; 
var grid = jQuery('#list').jqGrid({ 
    // ... 
    ondblClickRow: function(id, ri, ci) { 
     if (isRowEditable(id)) { 
      // edit the row and save it on press "enter" key 
      grid.jqGrid('editRow',id,true); 
     } 
    }, 
    onSelectRow: function(id) { 
     if (id && id !== lastSel) { 
      // cancel editing of the previous selected row if it was in editing state. 
      // jqGrid hold intern savedRow array inside of jqGrid object, 
      // so it is safe to call restoreRow method with any id parameter 
      // if jqGrid not in editing state 
      grid.jqGrid('restoreRow',lastSel); 
      lastSel = id; 
     } 
    }, 
    pager: '#pager' 
}).jqGrid('navGrid','#pager',{edit:false}); 
+0

자세한 내용을 입력 해 주셔서 감사합니다. 합리적인 해결책처럼 들립니다. –

+0

@Oleg : 여전히 행의 인라인 및 양식 편집이 가능합니다. 비활성화 된 행의 인라인 및 양식 편집도 방지하는 방법은 무엇입니까? – Andrus

2

논리적으로 할 수 있습니다. 일부 셀을 편집 할 수 있고 일부는 편집 할 수없는 셀에 대한 기준이 있어야합니다.

나는 그것을 현명하게 구현했다.

jqgrid에 대한 XML을 만들 때 각 행에 id를 지정하십시오.

이러한 ID를 기반으로 jqgrid 메소드를 사용하여 해당 행의 셀을 편집 가능 또는 편집 불가능으로 만들 수 있습니다.

beforeEditCell: function(rowid, cellname, value, iRow, iCol) { 
    // here identify row based on rowid 
    // if the row should not be editable than simply make the cells noneditable using 
    editCell(iRow, iCol, false); 
    jQuery(gridid).jqGrid("restoreCell",iRow,iCol); 

} 

당신은 더 자신을 구현할 수 아래

는 beforeEditCell 방법입니다.

희망 사항은 도움이 될 것입니다. :)

관련 문제