2012-10-29 5 views
0

jqGrid에 문제가 있습니다. caron 문자 (š, ž, č, ć, đ, ...)를 정렬하고 싶습니다. "caronCharacters"함수를 사용하여 해당 caron을 코드로 바꿉니다. caronCharacters(data, sortableColumns[sortIndex], false);이 우호적 인 경우 정렬이 정상입니다.하지만이 경우에는 단어 안에 caron이 없지만 일부 "zxxx"코드는 대신 ... ... 그때 나는 아무것도 할 didnt는 것처럼 ... 내가 방아쇠 "reloadGrid"종류의 데이터가 다시 ... 유 나를 이해 희망을 가정 같은 결과를 가지고 다시 캐론 문자에이 코드를 대체 할jqGrid caron sort

$('#sortAZ,#sortZA').click(function(){ 
    var order='asc'; 
    if ($(this).attr('id')=='sortZA'){ 
     var order='desc'; 
    } 
    if (sortIndex==''){ 
     return; 
    } 
    // change caron character into some code..like zž or zxxx 
    var data = $('#gridTable').jqGrid('getGridParam').data; 

    caronCharacters(data, sortableColumns[sortIndex], true); 
    jQuery("#gridTable").jqGrid('setGridParam',{sortname:sortableColumns[sortIndex],sortorder:order}); 

    // change code back to caron...if next line is in comment it works sorting, but no carons... 
    caronCharacters(data, sortableColumns[sortIndex], false); 
    jQuery("#gridTable").trigger('reloadGrid'); 
    $('#dropMenuFilter').hide(); 

    function caronCharacters(data, sortableColumn, direction){ 
     if(direction){ 
      for(var i in data){ 
       data[i][sortableColumn] = replaceCaron(data[i][sortableColumn]); 
       $('#gridTable').jqGrid('getLocalRow', i)[sortableColumn] = data[i][sortableColumn]; 
      } 
     } 
     else{ 
      for(var i in data){ 
       data[i][sortableColumn] = replaceCaronCode(data[i][sortableColumn]); 
       $('#gridTable').jqGrid('getLocalRow', i)[sortableColumn] = data[i][sortableColumn]; 
      } 
     } 
    } 
}); 

function replaceCaron(word){ 
    word = word.replace(/Č/g, "Cxxx"); 
    word = word.replace(/Ć/g, "Cxxx"); 
    word = word.replace(/Đ/g, "Dxxx"); 
    word = word.replace(/Š/g, "Sxxx"); 
    word = word.replace(/Ž/g, "Zxxx"); 
    word = word.replace(/č/g, "cxxx"); 
    word = word.replace(/ć/g, "cxxx"); 
    word = word.replace(/đ/g, "dxxx"); 
    word = word.replace(/š/g, "sxxx"); 
    word = word.replace(/ž/g, "zxxx"); 
    return word; 
} 

function replaceCaronCode(word){ 
    word = word.replace(/Cxxx/g, "Č"); 
    word = word.replace(/Cxxx/g, "Ć"); 
    word = word.replace(/Dxxx/g, "Đ"); 
    word = word.replace(/Sxxx/g, "Š"); 
    word = word.replace(/Zxxx/g, "Ž"); 
    word = word.replace(/cxxx/g, "č"); 
    word = word.replace(/cxxx/g, "ć"); 
    word = word.replace(/dxxx/g, "đ"); 
    word = word.replace(/sxxx/g, "š"); 
    word = word.replace(/zxxx/g, "ž"); 
    return word; 
} 
+0

jqGrid를'datatype : "local"'으로 사용하거나 일부 원격 데이터 유형 ("json"또는 "xml")을'loadonce : true'와 함께 사용합니까? ''# sortAZ''와''# sortZA''는 무엇입니까? 열 머리글을 클릭하여 표준 정렬이 사용자 지정 정렬 규칙에 해당하는 것이 더 좋지 않습니까? – Oleg

+0

원격 데이터 유형 json을 사용합니다. 네, 아마도 더 좋지만 어쨌든 솔기 정렬을 사용할 수 없습니다 ... 그게 내가 성취해야만하는 디자인입니다 ... – Clem

+0

만약'datatype : "json"'* without loadonce : true'를 사용한다면 모든 정렬은 * 서버 측에서 수행 *. 따라서 추가 JavaScript 코드를 작성할 필요는 없지만 서버 코드를 변경하거나 해당 SQL 문의 ORDER BY 부분에서 COLLATE 부분을 사용하십시오 ([here] (http://msdn.microsoft.com/en- us/library/ms188385.aspx # Collation) 예) – Oleg

답변

1

그것은 당신이 두 가지 방법에서 하나의 문제를 해결할 수 귀하의 요구 사항을 이해 수정 :

  • 구현 사용자 정의 사용에 의해 정렬은 기능으로 정의됩니다. 예를 제공하는 the answer을 참조하십시오.
  • 비교 또는 문자열 중에 jqGrid가 사용하는 "서브 클래스"내부 메소드입니다. 해당 예는 another answer을 참조하십시오.
+0

고마워, 내가 그렇게하려고 노력할거야. 그럼 ... 작동한다면 게시 할게. 다시 감사드립니다 .. – Clem

+0

@Klemzy : 오신 것을 환영합니다! – Oleg