spo*_*oti 9 kendo-ui kendo-grid
我正在尝试使用Kendo-UI网格和分页.一切似乎都可以用于Total属性,虽然我将它设置为100但它显示了10个项目中的1到10个页面大小我正在设置.谁有这个更好的成功?我搜索了剑道文档和论坛没有成功.
@(Html.Kendo().Grid(Model)
.Name("Grid")
.Columns(columns =>
{
foreach (System.Data.DataColumn column in Model.Columns)
{
columns.Bound(column.ColumnName);
}
})
.Pageable()
.Sortable()
.Scrollable()
.Filterable()
.Groupable()
.DataSource(dataSource => dataSource
.Ajax()
.PageSize(10)
.Total(100)
.Model(model =>
{
foreach (System.Data.DataColumn column in Model.Columns)
{
model.Field(column.ColumnName, column.DataType);
}
})
.Read(read => read.Action("Read", "Controls"))
)
Run Code Online (Sandbox Code Playgroud)
)
谢谢
Pet*_*bev 14
如文档中所述,当启用serverPaging时,您需要在架构中指定total,并且每次从服务器返回响应时,您还需要返回该总计.
dataSource: {
serverPaging: true,
schema: {
data: "data",
total: "total"
},
//...
Run Code Online (Sandbox Code Playgroud)
这里讨论的是相同的.
请检查以下示例.
小智 8
是的,您需要在响应中传递Total字段.
您的观点可能如下:
@(Html.Kendo().Grid<YourViewModel>()
.Name("grid")
.DataSource(dataSource => dataSource
.Ajax()
.PageSize(20)
.ServerOperation(true)
.Read(read => read.Action("Data_Read", "YourController", new {Id=Model.CurrentId}))
)
.Columns(c =>
{
c.Bound(x => x.Name);
c.Bound(x => x.CreatedTime);
})
.Pageable()
.Sortable()
)
Run Code Online (Sandbox Code Playgroud)
您的操作代码如下:
public ActionResult Data_Read([DataSourceRequest]DataSourceRequest request, int Id)
{
int total = yourQuery.GetTotal(Id);
var returnViewModel = yourQuery.GetViewModels(Id, request.Page, request.PageSize);
return Json(new
{
Data = returnViewModel,
Total=total
});
}
Run Code Online (Sandbox Code Playgroud)
在Fiddler中查看请求和响应,您将看到魔术是如何发生的:请求:sort = SessionId-asc&page = 7&pageSize = 20&group =&filter =
这是网格传递给控制器的DataSourceRequest格式; 它已经包含了分页所需的参数.
查看操作的响应,您将看到有一个包含所有记录的数据字段.总计字段是Kendo网格分页所需的所有记录的总数.
| 归档时间: |
|
| 查看次数: |
47444 次 |
| 最近记录: |