2014-10-24 3 views
0

나는 고정 컬럼과 관련된 모든 게시물을 읽었습니다. 그러나 아직도 나는 나의 문제를 해결할 수 없다.JqGrid - 고정 열

setFrozenColumns를 호출하면 열이 고정되었지만 다른 열 머리글이 눈금에 추가되었습니다. 따라서 열 머리글은 열보다 하나 더됩니다. 이 문제를 해결하는 방법. 코드에 대한 내 견해가 있습니다.

makeJqueryGridInstance(grid, gridSettings); 
window.prepareSortableColumns(grid); 

makefrozenColumns(grid); 

function makeFrozenColumn(grid) 
{ 
    var colmodel = grid.jqGrid('getGridParam', 'colModel'); 
    if (colmodel[0].name === 'cb') 
     { 
      grid.jqGrid('setColProp', colmodel[0].name, { frozen: true }); 
      grid.jqGrid('setFrozenColumns'); 
      fixPositionsOfFrozenDivs.call(grid[0]); 
     } 
} 

function prepareSortableColumns(grid) 
{ 
    var gridSettings = grid.data('settings'); 
    var gridId = gridSettings.gridId; 
    var columnHeaders = $("#" + "gview_" + gridId.replace("#", "")).find(".ui-jqgrid-htable > thead > tr > th"); 
    var colModel = grid[0].p.colModel; 
    $.each(columnHeaders, function (index, columnHeader) 
    { 
     if (colModel[index].sortable == false) 
     { 
      $(columnHeader).find("div").removeClass("ui-jqgrid-sortable"); 
     } 
    }); 
} 

처음으로 제대로 작동하고 열이 정지되었습니다.

그러나 두 번째로 prepareSortableColumns (grid)를 호출 할 때 colHoder에 colModel이 하나 이상 있습니다 (devTools를 통해 디버깅했습니다). 그래서 sortable 특정 columnHeader에 대한 오류가 발생했습니다.

아무도 도와 드릴 수 있습니까? 미리 감사드립니다.

답변

0

prepareSortableColumns 코드가 잘못되었습니다. 고정 된 열을 사용하는 경우 다이빙에 대한 방향이 추가되지 않습니다 (자세한 내용은 the answer을 참조하고 개발자 도구를 사용하여 그리드의 구조를 검사하십시오). 당신은 당신이 이렇게하는 방식으로 columnHeaders을 선택하는 대신 grid[0].grid.headers 배열을 사용해 볼 수 있습니다.

또한 일반적으로 ui-jqgrid-sortable 클래스를 삭제하는 것은 잘못되었습니다. 그 이름 때문에 그 반의 의미는 종종 잘못 이해 될 것입니다. 정렬 할 수없는 열에도 클래스가 있어야합니다. 대신 CSS 스타일 cursor: default을 헤더에 설정해야합니다. 해당 코드 예제는 the old answer을 참조하십시오.

+0

감사합니다. 나를 위해 일하고. – trinadh

+0

@ 트라이 나드 : 천만에! – Oleg