2016-08-08 5 views
2

Knockout-Kendo.js 라이브러리를 사용하여 Kendo Grid를 녹아웃 바인딩으로 바인딩합니다. 필자는 각기 자신에게 할당 된 열 집합이있는 여러 데이터 소스를로드하는 시스템을 구축했습니다. Knockout 바운드 Kendo Grid에 새 컬럼 콜렉션을 할당하는 것을 제외하고는 모든 것이 잘 작동합니다.Knockout-Bound 검도 UI 그리드 열 컬렉션 업데이트

열을 다시 초기화하는 데는 몇 가지 방법을 읽었지만이 모든 경우에는 모눈을 파괴하고 다시 만들어야합니다. Knockout 바운드 그리드를 사용하여이 문제를 어떻게 해결할 지 확신 할 수 없습니다. 아래 코드를 사용하고 있습니다.

HTML :

<div data-bind="kendoGrid: gridOptions"></div> 

넉 아웃/JS :

self.SearchResultsself.GridColumns 모두 관찰 할 수있는 배열입니다.

self.gridOptions = { 
    data: self.SearchResults, 
    columns: self.GridColumns 
}; 

self.SearchResults을 업데이트하면 눈금이 올바르게 업데이트됩니다. self.GridColumns을 업데이트해도 눈금의 표시된 열에 영향을 미치지 않습니다.

위의 링크 된 라이브러리에서 제공하는 녹아웃 바인딩을 사용하여 열 컬렉션을 업데이트하고 표시하는 방법에 대해 올바른 방향을 제시해 줄 수있는 사람이 있다면 크게 감사하겠습니다.

+0

'self.gridOptions'이 있어야한다 관측 가능하므로 데이터 바인딩은 업데이트 시점을 알 수 있습니다. 멤버를 업데이트 할 때'self.gridOptions.valueHasMutated()'를 호출하십시오. 나는 단지 일들이 어떻게 작동해야하는지에 근거하고있다. 바인딩이 실제로 어떻게 작동하는지 모르겠습니다. –

답변

0

그래서, 저는 이것을 알아 냈습니다. 정말로 단순한 것으로 밝혀졌습니다.

  1. 그리드에 대한 참조 및
  2. 업데이트 된 self.GridColumns()가에 격자 옵션을 설정 옵션
  3. 로 계산 할당 현재 그리드 옵션을 가져 오기 : 내가하고 결국 무엇

    이이었다 업데이트 옵션

    var grid = $("#grid").data("kendoGrid"); 
        var options = grid.getOptions(); 
        options.columns = self.GridColumns(); 
        grid.setOptions(options);