2014-10-31 3 views
0

SignalR 데이터 소스가있는 Kendo UI 그리드 용 Teleirk MVC 래퍼를 사용하여 응용 프로그램을 만들었습니다.서버 필터링, 정렬, 페이징 중단 활성화 SignalC 클라이언트 업데이트 (MVC 용) Kendo UI Grid

그리드의 업데이트가 전송되고 클라이언트 측 필터링, 정렬, 페이징으로 완벽하게 응용 프로그램을 실행하는 모든 클라이언트에 반영되었습니다. 내가 사용하고있는 데이터 소스는 다소 커서 (필터링, 정렬, 페이징 작업과 관련된 성능 문제가 발생) 그래서 서버 필터링, 정렬, 페이징을 사용하여 내 성능 문제를 해결하고 응용 프로그램의 유용성을 대폭 향상시킨 그리드를 재구성했습니다.

내가 이러한 동작을 이동하도록 재구성 한 후 서버 측에서 변경 사항이 모든 클라이언트 컴퓨터에 반영되고 있지 않은 것으로 나타났습니다. 그런 다음 클라이언트 측과 서버 측 필터링, 정렬 및 페이징 사이를 앞뒤로 전환하여 변경 사항이 내 문제점의 원인인지 확인했습니다.

누구나 전에 경험 했습니까? 그리고이 문제를 해결하는 방법에 대한 단계/조언을 제게 제공 할 수 있습니까?

고맙습니다.

답변

2

Telerik이 솔루션을 제공했습니다. 여기에 대한 대답으로 스레드는 다음과 같습니다

[http://www.telerik.com/forums/enabling-server-filtering-sorting-paging-breaks-signalr-client-updates-for-mvc-kendo-ui-grid#HsK5Fb_TqE-jnM98lZZrUQ][1]

당신이 모든 방법이 동일한 유형의 반환 있는지 확인해야합니다 귀하의 SignalR 허브 클래스 내부 DataSourceRequestDataSourceResult를 사용하는 경우 :

 public DataSourceResult Read(DataSourceRequest request) 
     { 
      var result = _dataService.Read().AsQueryable().ToDataSourceResult(request); 
      return result; 
     } 

     public void Update(ProductTitlePartsBySku item) 
     { 
      _dataService.Update(item); 
      Clients.Others.update(item); 
     } 

에서을 이 시나리오는 Clients.Others.update 호출은 항목을 반환 - 그것은해야한다 :

Clients.Others.update(new DataSourceResult 
{ 
    Data = new[] { item } 
}); 

당신에게 뮤스를

.Schema(schema => schema 
     .Data("Data") 
     .Total("Total") 
     .Aggregates("Aggregates") 
     .Model(model => 
     { 
      model.Id(m => m.IDCOLUMN); 
      model.Field(m => m.IDCOLUMN).Editable(false); 
     }) 
    ) 

이것은 그리드는 DataSourceResult

+0

의 데이터 속성에 바인딩 할 수 있습니다 알고하지만 난에 표시되지 않습니다 보장 : t 또한 그리드보기에서 .DATA 옵션 등을 설정할 수 있도록 솔루션은 업데이트가 클라이언트 특정 필터, 정렬 및 페이징 설정을 어떻게 준수 하는지를 보여줍니다. 클라이언트가 현재 1 페이지에있는 동안 항목이 2 페이지에 나타날 수도 있지만 업데이트가 전송됩니다.이 문제를 해결하는 방법에 대한 아이디어가 있습니까? – Kevkong