我使用带有SignalR数据源的Kendo UI网格的Teleirk MVC包装器创建了一个应用程序。
网格的更新被传输并反映在运行应用程序的所有客户端上(使用客户端过滤,排序,分页)。我使用的数据源相当大(这导致了过滤,排序,分页操作的一些性能问题)。所以我然后重新配置我的网格使用服务器过滤,排序,分页,这确实解决了我的性能问题,并大大提高了应用程序的可用性。
在我重新配置为在服务器端移动这些操作后,我注意到我正在进行的更改没有反映在所有客户端计算机上。然后,我在客户端和服务器端过滤,排序和分页之间来回切换,以验证该更改是我的问题的原因,以确保。
有没有人在自己面前经历过这个?你能否就如何解决这个问题向我提供步骤/建议?
谢谢
答案 0 :(得分:3)
Telerik为我提供了解决方案。这是答案的主题:
如果您在SignalR Hub类中使用DataSourceRequest
和DataSourceResult
,则需要确保所有方法都返回相同的类型:
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 }
});
您还必须确保在网格视图中设置.Data选项等:
.Schema(schema => schema
.Data("Data")
.Total("Total")
.Aggregates("Aggregates")
.Model(model =>
{
model.Id(m => m.IDCOLUMN);
model.Field(m => m.IDCOLUMN).Editable(false);
})
)
这可确保网格知道它必须绑定到DataSourceResult
的Data属性