2010-07-24 7 views
1

jqGrid 3.7.2를 로컬 데이터와 함께 사용하고 있습니다. 일부 열의 경우 기본 sorttype이 충분하지 않습니다. 문서에서 이해할 수있는 사용자 지정 sorttype을 제공해야합니다. 나는 그것이 작동하도록하는 방법을 모른다. 아래 코드는 작동시키기위한 최선의 시도입니다. 사용자 지정 정렬 함수를 호출 할 수는 없습니다. 아이디어는 'Posn'필드를 'GK'-> 'DEF'-> 'MID'-> 'STR'순서로 정렬하는 것입니다. 여기에 내가 작업 좀하고 싶습니다 코드입니다 :jqGrid with custom sorttype

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> 
<html> 
<head> 
    <title>Table Testbed</title> 
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 

    <link rel="stylesheet" type="text/css" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/themes/south-street/jquery-ui.css"> 
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script> 
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/jquery-ui.min.js"></script> 

    <link rel="stylesheet" type="text/css" href="/thirdParty/jqGrid/ui.jqgrid.css" > 
    <script type="text/javascript" src="/thirdParty/jqGrid/grid.locale-en.js"></script> 
    <script type="text/javascript" src="/thirdParty/jqGrid/jquery.jqGrid.min.js"></script> 

    <script type="text/javascript"> 
    $().ready(function() 
    { 
    tableToGrid("#playerTable", 
    { 
    datatype: "local", 
    sortable: true, 
    hidegrid: false, 
    multiselect: false, 
    altRows: true, 
    height: "100%", 
    width: "155px", 
    shrinkToFit: true, 
    rowNum: 100, 
    colNames: ['Posn','Name'], 
    colModel: [ 
    {name:'Posn', index:'Posn', width:100, sorttype: 
     function(cell) 
     { 
     if (cell=='GK') return '0'; 
     if (cell=='DEF') return '1'; 
     if (cell=='MID') return '2'; 
     if (cell=='STR') return '3'; 
     } 
    }, 
    {name:'Name', index:'Name', width:200, sorttype:"text"} 
    ] 
    }); 
    }); 
    </script> 
</head> 

<body> 
    <table id="playerTable"> 
    <thead> 
    <tr><th>Posn</th><th>Name</th></tr> 
    </thead> 
    <tbody> 
    <tr><td>GK</td><td>Almunia</td></tr> 
    <tr><td>GK</td><td>Fabianski</td></tr> 
    <tr><td>DEF</td><td>Campbell</td></tr> 
    <tr><td>DEF</td><td>Clichy</td></tr> 
    <tr><td>MID</td><td>Denilson</td></tr> 
    <tr><td>MID</td><td>Diaby</td></tr> 
    <tr><td>STR</td><td>Arshavin</td></tr> 
    <tr><td>STR</td><td>Bendtner</td></tr> 
    </tbody> 
    </table> 
</body> 
</html> 
+0

게시 할 때 코드 서식을 지정할 수 있습니까? 그것은 현재의 상태에서 다소 읽을 수 없습니다. – kander

+0

또한 tableToGrid 함수는 무엇입니까? – kander

답변

3

아마 sorttype의 사용법은 내 스레드 http://www.trirand.com/blog/?page_id=393/help/custom-local-sort-with-respect-of-the-function-as-index/에 대한 Tony의 답변에서 볼 수 있습니다. 귀하의 문제는 매우 쉽게 해결할 수 있습니다. index을 로컬 jqGrid 데이터의 사용자 정의 정렬 기능으로 사용하려면 버전 3.7.1에서는 제대로 작동하지만 jqGrid 버전 3.7.2에서는 더 이상 작동하지 않을 것입니다. 기능으로서 sorttype 기능은 버전 3.7.2 릴리스 이후에 jqGrid 에 구현됩니다.

그래서 당신이 http://github.com/tonytomov/jqGrid/tree/master에서 에게있는 jqGrid의 최신 버전을 다운로드해야하는 기능으로 sorttype을 사용할 수 있습니다. 이것은 jqGrid의 압축되지 않은 버전입니다. 압축되지 않은 버전의 jqGrid가 아니라면 http://www.trirand.com/jqgridwiki/doku.php?id=wiki:how_to_install#development_installation을 읽어서 js 파일 중 어떤 순서에 포함시켜야하는지 추천합니다. http://www.ok-soft-gmbh.com/jqGrid/CustomSorttype1.htm 아래에서 사용자 정의 함수가 실제로 작동하는 코드의 작동 예제를 찾을 수 있습니다.

+0

절대적으로 환상적입니다. 고맙습니다. 예 내가 언급 한 스레드에서 사용자 정의 정렬 아이디어를 보았지만 3.7.2에서는 작동하지 않는다는 언급은 없었습니다! 나는 내가 오해하고 있다고 생각했다. 로컬 데이터를 사용하는 모든 사용자에게 중요한 기능이라고 생각합니다. 3.7.3을 참조하십시오! – cjm19682

+0

당신을 환영합니다! 나는이 특징의 중요성에 대해 같은 의견을 가지고있다. 그런데 jqrid의 다음 버전은 3.7.3이 아니라 3.8이 될 것이지만 중요하지는 않습니다. 그럼에도 불구하고, 나는 기쁘다. – Oleg

2

따르면 this forum post로는, 그리드가 초기화되지 onSortCol 이벤트 기간 동안 때 사용자 정의 sorttype 만 호출됩니다

내가 알고있는 것처럼 sorttype : sortDate와 같은 사용자 정의 sorttype이있는 경우 sortDate 함수는 jqGrid가 초기화되고 onSortCol 이벤트가 아닌 경우에만 호출됩니다. onSortcol 호출 SortDate를 만들 수있는 유일한 방법은 onSortCol 이벤트를 수동으로 넘기거나이 작업을 수행하는 지루한 코드를 작성하고 이에 따라 그리드를 업데이트하는 것입니까? sorttype을 정의하지 않는 이유는 무엇입니까? sortDate는 ride overSortCol 이벤트를 자동으로 오버라이드합니까? 내 말은 jqGrid가 initailized 될 때 올바르게 정렬하지만, 이벤트를 호출 할 때 정렬을 사용하여 빌드해야합니다. 왜 내 sortDate 함수는 실제로 jqGrid를 업데이트하는 코드가 없기 때문에 묻습니다. jqGrid의 바깥 쪽에서 사용되는 1, -1 또는 0을 반환합니다 ...

표시되는 동작을 설명합니까?