启用服务器过滤,排序,分页中断MVC Kendo UI网格的SignalR客户端更新
本文关键字:网格 UI SignalR 客户端 Kendo 更新 MVC 过滤 服务器 排序 分页 | 更新日期: 2023-09-27 18:28:35
我使用Teleirk MVC包装器为Kendo UI网格创建了一个带有SignalR数据仓库的应用程序。
网格的更新被传输并反映在所有完美运行应用程序的客户端上(包括客户端过滤、排序、分页)。我使用的数据源相当大(这导致了一些过滤、排序和分页操作的性能问题)。因此,我重新配置了我的网格,使用服务器过滤、排序和分页,这确实解决了我的性能问题,并大大提高了应用程序的可用性。
在我重新配置为将这些操作移动到服务器端之后,我注意到我所做的更改并没有反映在所有客户端机器上。然后,我在客户端和服务器端的过滤、排序和分页之间来回切换,以确定该更改是否是导致我出现问题的原因。
有人经历过这种事吗?你能为我提供如何解决这个问题的步骤/建议吗?
感谢
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 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属性