我正在看演示:Telerik的演示这Telerik的例子
我仍然不明白如何使用这种技术来传递参数到Read方法,所以它不会读取所有游戏或产品,而是只读取一个游戏或产品的子集。如果我改变Read方法接收参数的服务器端代码,它永远不会被击中,我不知道如何从传输中传递参数客户端定义定义…任何帮助都是非常重要的欣赏!
我把这个问题贴到了Telerik的论坛上,得到了这个应该可以工作的!Telerik的回答
如果将来有人出现并且其他答案中的链接已经消失,或者对于那些不想下载项目文件并自己筛选它的人,这里有来自Telerik论坛上给出的答案的更多细节:
他们使用Kendo.DynamicLinq
来"绑定请求参数"。
他们创建了一个自定义类,该类反映了AJAX网格操作中通常使用的现有DataSourceRequest
类的结构。
using System.Collections.Generic;
using Kendo.DynamicLinq;
namespace SignalRLocalHub.Models
{
public class MyDataSourceRequest
{
public int Take { get; set; }
public int Skip { get; set; }
public int Page { get; set; }
public int PageSize { get; set; }
public Filter Filter { get; set; }
public IEnumerable<Sort> Sort { get; set; }
public IEnumerable<Aggregator> Aggregates { get; set; }
}
}
在ProductHub
(SignalR hub)类中,这是Read
方法:
public DataSourceResult Read(MyDataSourceRequest request)
{
return productService.Read()
.ToDataSourceResult(
request.Take,
request.Skip,
request.Sort,
request.Filter,
request.Aggregates);
}
作为参考,它调用的productService.Read
方法看起来像这样:
//int take, int skip, IEnumerable<Sort> sort, Filter filter, IEnumerable<Aggregator> aggregates
public IQueryable<ProductViewModel> Read()
{
return entities.Products
.OrderBy(p => p.ProductID)
.Select(product => new ProductViewModel
{
ProductID = product.ProductID,
ProductName = product.ProductName,
UnitPrice = product.UnitPrice.HasValue ? product.UnitPrice.Value : default(decimal),
UnitsInStock = product.UnitsInStock.HasValue ? product.UnitsInStock.Value : default(short),
Discontinued = product.Discontinued
});
}
最后是网格的DataSource
配置:
.DataSource(d => d
.SignalR()
.AutoSync(true)
.Transport(tr => tr
.Promise("hubStart")
.Hub("hub")
.Client(c => c.Read("read").Create("create").Update("update").Destroy("destroy"))
.Server(s => s.Read("read").Create("create").Update("update").Destroy("destroy"))
)
.ServerFiltering(true)
.Filter(f => f.Add(m => m.UnitPrice).IsEqualTo(10))
.ServerPaging(true)
.PageSize(10)
.Schema(s => s
.Data("Data")
.Total("Total")
.Aggregates("Aggregates")
.Model(m =>
{
m.Id(e => e.ProductID);
m.Field(e => e.ProductID).Editable(false);
})
)
)
允许按网格视图模型的部分的任何字段进行排序、分页和过滤。所以只要你的类别id