ASP.NET MVC中的Kendo UI网格分页问题

时间:2013-10-07 01:47:42

标签: c# asp.net-mvc kendo-ui kendo-grid kendo-asp.net-mvc

在我的Kendo UI Grid中,我将Page Size属性设置为3 - PageSize(3):

@(Html.Kendo().Grid<Kendo.Mvc.Examples.Models.Discount>()
    .Name("discountgrid")
    .Columns(c=>
    {
        c.Bound(d => d.Id);
        c.Bound(d => d.Category);
        c.Bound(d => d.Percentage);
        c.Bound(d => d.Merchandise);
        c.Command(cm => { cm.Edit(); cm.Destroy(); });
    })
    .Pageable()
    .ToolBar(toolbar => toolbar.Create())
    .Editable(editable => editable.Mode(GridEditMode.InCell))
    .DataSource(dataSource => dataSource
        .Ajax()
        .PageSize(3)
        .ServerOperation(false)
        .Model(model => model.Id(d => d.Id))
        .Create(update => update.Action("EditingInline_Create", "Grid"))
        .Update(update => update.Action("EditingInline_Update", "Grid"))
        .Destroy(update => update.Action("EditingInline_Destroy", "Grid"))
    )
)

添加前三行后,当我插入第4条记录时,第一条记录消失(正如预期的那样) - 但我没有看到在网格页脚中转到第二页(第2页)的选项。

为什么?我错过了什么?

3 个答案:

答案 0 :(得分:3)

我认为您缺少向网格提供READ操作。

答案 1 :(得分:2)

您必须在DataSource上指定Read操作并添加RequestEnd事件。您可以将DataSource读取方法放在此事件中。然后可以使用RequestEnd事件上的事件类型参数(例如“update”,“create”,“destroy”)来确定哪个操作已完成并重新加载网格上的数据。

@(Html.Kendo().Grid<Kendo.Mvc.Examples.Models.Discount>()
.Name("discountgrid")
.Columns(c=>
{
    c.Bound(d => d.Id);
    c.Bound(d => d.Category);
    c.Bound(d => d.Percentage);
    c.Bound(d => d.Merchandise);
    c.Command(cm => { cm.Edit(); cm.Destroy(); });
})
.Pageable()
.ToolBar(toolbar => toolbar.Create())
.Editable(editable => editable.Mode(GridEditMode.InCell))
.DataSource(dataSource => dataSource
    .Ajax()
    .PageSize(3)
    .ServerOperation(false)
    .Events(e => { e.RequestEnd("onRequestEnd"); })//onRequestEnd is the javascript fxn
    .Model(model => model.Id(d => d.Id))
    .Read(read => read.Action("EditingInline_Read","Grid"))
    .Create(update => update.Action("EditingInline_Create", "Grid"))
    .Update(update => update.Action("EditingInline_Update", "Grid"))
    .Destroy(update => update.Action("EditingInline_Destroy", "Grid"))
))


<script type="text/javascript">

function onRequestEnd(e) {
    if (e.type === "create" || e.type === "update" || e.type === "destroy") {
        e.sender.read();
    }
}

</script>

如果您需要更多信息,请阅读link

答案 2 :(得分:1)

尝试将Read()操作添加到您的网格中,出于测试目的,可以设置ServerOperation(true)