0

나는 우리가 할 수없는 모든 것을 관리하기 위해 jQuery/Javascript 코딩과 함께 프론트 엔드 용 KENDOUI를 사용하는 프로젝트를 진행하고 있습니다. 프레임 워크 자체.".toJSON"은 무엇이며 어떻게 "되돌리기"또는 "되돌릴 수 있습니까?"

나는 내가 뭘하려고 오전 여기 정렬 및 클라이언트 측을 필요로 검도 그리드되어 있습니다 -

var tPositiondata = _DetailsGridDS.data(); 
    // sort position datasource in order to bind treeview 
    tPositiondata = tPositiondata.toJSON().sort(function (a, b) { 
     { 
      if ((a.DisplayText.localeCompare(b.DisplayText)) < 0) { return -1; } 
      else if ((a.DisplayText.localeCompare(b.DisplayText)) > 0) { return 1; } 
     } 
    }); 

    //re-initialize the grid with new datasource 
    $("#DivDetailsTable").empty(); 
    $("#DivDetailsTable").kendoGrid({ 
     autobind: false, 
     scrollable: true, 
     height: 333, 
     pageSize: 10, 
     dataSource: tPositiondata, 
     dataBound: OnReceivedDataFromDatasource, 
     columns: [ 
    { 
     field: "UniqueValue", 
     title: _ColumnHeaderUniqueValue 
    }, 
    { 
     //field: "DisplayTextTranslation", 
     title: _ColumnHeaderDisplayText, 
     template: '#= GetTranslation(Id) #' 
    }, 
    { 
     field: "CodeAttribute", 
     title: _ColumnHeaderCodeAttribute 
    }, 
    { command: [{ text: _ButtonEdit, className: "k-button k-button-icontext buttonEdit k-grid-Edit" }, { text: _ButtonDelete, className: "k-button k-button-icontext buttonDelete k-grid-Delete" }, { text: "&nbsp;", className: "buttonUp", width: 15 }, { text: "&nbsp;", className: "buttonDown", width: 15}], text: "", title: "&nbsp;", width: 230 } 
    ], 
     editable: "inline" 
    }); 

이제 문제는, 변수 "tPositionData"는 "_DetailsGridDS에 다시 할당 할 수 없다는 것입니다 왜냐하면 그들은 분명히 같은 유형이나 형식이 아니기 때문입니다. 이 때문에 전역 변수 "_DetailsGridDS"에는 업데이트 된 정렬 된 데이터가 없습니다. 코드에서 다른 곳을 참조하면 정렬 된 데이터가 없습니다.

사람이 정렬 후에 .toJSON 호출을 "실행 취소"/ "취소"할 수 있도록 도와 주시겠습니까? 다시 _DetailsGridDS에 할당 할 수 있습니까? 아니면 누군가 내 주변 변수가 항상 업데이트되도록 임시 해결책을 제시 할 수 있습니까? 최신 정렬 된 데이터가 있습니까?

+1

http://api.jquery.com/jQuery.parseJSON/는 작동해야합니다 –

+2

왜 코드에서'toJSON()'이 사용되는 것입니까? 'tPositiondata.toJSON(). sort()'은 의미가 없기 때문에 문자열을 정렬 할 수 없습니다. 먼저 정렬 한 다음'toJSON()'을 사용하십시오 :'tPositiondata.sort (/ * 당신의 정렬 함수 * /). toJSON()'. 또한 두 항목이 동일하면 정렬 함수가 0을 리턴해야합니다. – nnnnnn

+0

TiesonT. - 그것이 작동하지 않는다면 null 값을 얻습니다 : | @nnnnnn : [object object]에 "sort"라는 메서드가 없다는 오류가 발생하기 전에 시도했습니다. – Sandeep

답변

0

모든 정보를 제공해 주셔서 감사합니다.

function SortGrid() { 
if ($("#DivDetailsTable").data("kendoGrid") != undefined) { 
    if ($("#inputSortByValueName").is(":checked")) { 
     $("#DivDetailsTable").data("kendoGrid").dataSource.sort({ field: "DisplayText", dir: "asc" }); 
    } 
    else { 
     $("#DivDetailsTable").data("kendoGrid").dataSource.sort({ field: "DisplaySequence", dir: "asc" }); 
    } 
} 

}

이 나를 위해 잘 운동했다 : 궁극적으로 내 솔루션은 다음과 같이이었다. 다시 고마워요 :)

0

Sandeep, 왜 정렬 기능에서 빌드를 사용할 수 없습니까? 데이터 정렬 방법을 설명해 주시겠습니까?

예 : 검도 격자 정의와 정렬에 관심이있는 열에 "sortable"을 추가하십시오.

$("#DivDetailsTable").kendoGrid({ 
    autobind: false, 
    scrollable: true, 
    sortable: { mode: "single", 
       allowUnsort: false }, 
+0

고맙습니다.하지만 서버 쪽 정렬을 수행 할 것이라고 생각합니다. – Sandeep

관련 문제