C# 为MVC Kendo UI网格启用服务器筛选、排序、分页中断信号器客户端更新
我使用Teleirk MVC包装器为Kendo UI网格创建了一个应用程序,其中包含一个SignalR datasouce 网格的更新被传输并反映在运行应用程序的所有客户端上(客户端过滤、排序、分页)。我使用的数据源相当大(这导致了一些过滤、排序和分页操作的性能问题)。因此,我随后重新配置了网格,使用服务器过滤、排序和分页,这确实解决了我的性能问题,并大大提高了应用程序的可用性 在我重新配置以将这些操作移动到服务器端后,我注意到我所做的更改并没有反映在所有客户端机器上。然后,我在客户端和服务器端过滤、排序和分页之间来回切换,以确认这一更改是问题的原因 有人以前有过这种经历吗?你能为我提供解决这个问题的步骤/建议吗C# 为MVC Kendo UI网格启用服务器筛选、排序、分页中断信号器客户端更新,c#,kendo-ui,telerik,telerik-grid,telerik-mvc,C#,Kendo Ui,Telerik,Telerik Grid,Telerik Mvc,我使用Teleirk MVC包装器为Kendo UI网格创建了一个应用程序,其中包含一个SignalR datasouce 网格的更新被传输并反映在运行应用程序的所有客户端上(客户端过滤、排序、分页)。我使用的数据源相当大(这导致了一些过滤、排序和分页操作的性能问题)。因此,我随后重新配置了网格,使用服务器过滤、排序和分页,这确实解决了我的性能问题,并大大提高了应用程序的可用性 在我重新配置以将这些操作移动到服务器端后,我注意到我所做的更改并没有反映在所有客户端机器上。然后,我在客户端和服务器端
谢谢你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属性,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属性,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属性,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属性,但我看不到该解决方案如何尊重客户端特定的筛选、排序和分页设置。即使项目可能出现在第2页,但客户端当前在第1页,也会发送更新。知道如何解决这个问题吗t我看不出解决方案中的更新如何尊重客户端特定的筛选、排序和分页设置。即使项目可能出现在第2页上,而客户端当前在第1页上,也会发送更新。知道如何解决这个问题吗?但我看不到解决方案中的更新如何尊重客户端特定的筛选、排序和分页设置分页设置。当客户端当前在第1页时,即使项目可能出现在第2页上,也会发送更新。知道如何解决此问题吗?但我看不到解决方案如何尊重客户端特定的筛选器、排序和分页设置。即使项目可能出现在第2页上,当客户端客户目前在第1页。你知道如何解决这个问题吗?