我正在使用带有 AJAX 绑定的 Telerik Grid MVC。
我认为如果我向网格提供 IQueryable,分页/排序/过滤将在数据库服务器上完成。像这样:
[GridAction]
public ActionResult Select()
{
return View(new GridModel(Mapper.Map<IEnumerable<DokumentVM>>(db.Dokumenti)));
}
我在数据库中创建了大约 10000 个文档的测试数据,上面的命令导致每个文档都被拖入网格。显然,这需要永远。
网格通过 AJAX 绑定,如下所示:
@(Html.Telerik().Grid<ViewModels.DokumentVM>()
.DataBinding(b => b.Ajax().Select("Select", "Dokument"))
.Pageable(p => p.PageSize(20))
.Sortable(s => s.SortMode(GridSortMode.MultipleColumn).OrderBy(m => { m.Add("Date").Descending(); m.Add("Number").Descending(); })))
在 Select ActionMethod 内部,在检查请求(其表单)时,我看到网格发送了正常运行所需的所有信息:
page: 1
size: 20
orderBy: Date-desc~Number-desc
但是当我进一步检查发送到数据库的 SQL 命令时,我发现只有 SELECT 命令存在,没有 WHERE,没有 ORDER by,什么都没有,这会降低我的所有数据。
我想知道分页/排序/过滤是否可以自动工作,或者我是否需要自己将网格发送的信息转换为 SQL 命令。我的印象是,我所需要的只是提供 IQueryable,其余的由 Grid 完成。但这对我不起作用。
也许我做错了什么,或者这甚至不可能?