2012-12-11 4 views
3

그리드에 바인딩 된 데이터 소스에 대한 포인터를 정의하는 관찰 가능 개체와 데이터 소스에 선언 된 집계 값을 반환해야하는 사용자 지정 필드가 있습니다.KendoUI : 데이터 소스에 대한 뷰 모델 바인딩 변경

두 번째 필드 ("totAmount")를 사용자 지정 HTML 요소에 바인딩하고 싶습니다.

값을 업데이트하는 방법을 모르겠다. 데이터 소스의 "read()"메서드를 호출 할 때 바인딩 된 값도 인터페이스에서 업데이트하면 안됩니까? "기본"모델 필드에서만 작동합니까?

=== JAVASCRIPT === 
var vm = kendo.observable({ 
    gridDatasource: new kendo.data.DataSource({ ... }), 
    totAmount: 0 
}); 

$("#grid").kendoGrid({ 
    change: function(e) { 
     vm.set("totAmount", this.dataSource.aggregates().totAmount); 
    } 
}); 


=== HTML === 
<span data-bind="text: totAmount"></span> 

답변

2

내 이전의 대답 :

=== JAVASCRIPT === 
var vm = kendo.observable({ 
    gridDatasource: new kendo.data.DataSource({ ... }), 

    totAmount: function() { 
     var ds = this.get("gridDatasource"); 
     var value = (ds.aggregates()) ? ds.aggregates().totAmount : 0; 
     return value; 
    } 
}); 

=== HTML === 
<span data-bind="text: totAmount"></span> 
0

은 지금까지 나는 데이터 소스에 바인더 제본 그리드의 "변경"이벤트에서 값을 설정, 내 이전 게시물 (bind HTML elements to grid selected row/dataItem)과 유사한 해결책을 발견했다 완전히 정확하지는 않았습니다. 모델 변경 사항을 각 행 선택에 바인딩합니다. 데이터 소스의 "change"이벤트에 바인딩하는 것이 더 좋습니다.

=== JAVASCRIPT === 
var vm = kendo.observable({ 
    gridDatasource: new kendo.data.DataSource({ ... }), 
    totAmount: 0 
}); 

vm.gridDatasource.bind("change", function(e) { 
    vm.set("totAmount", this.aggregates().totAmount); 
}); 


=== HTML === 
<span data-bind="text: totAmount"></span> 
관련 문제