Telerik / Kendo MVC Grid,按需加载网格,而不是页面加载

时间:2017-07-05 12:52:26

标签: model-view-controller kendo-ui telerik grid modal-dialog

我找到了几个关于如何做到这一点的例子,但没有一个能为我工作。

这是我的Telerik MVC网格:

@(Html.Kendo().Grid<PlayerStatsViewModel>()
    .Name("PlayerStats")
    .Columns(columns =>
    {
        columns.Bound(o => o.PlayerId);
        columns.Bound(o => o.FirstName);
    })
    .DataSource(dataSource => dataSource
        .Ajax()
        .Model(model => model.Id(p => p.PlayerId))
    .Read(read => read.Action("PlayerStats_Read_Bound", "Contest").Data("getPlayerId"))      
    ).AutoBind(false)
    )

使用我的网格打开模态

我设置autobind(false)以防止页面加载。在用户单击链接后,我使用我的网格打开一个模态,并需要传入一个参数。

// open modal
$(document).on("click", "#openStatsModal", function () {
    playerId = $(this).data('id'); // get parameter from click
    loadPlayerStats();
});

function getPlayerId() {
    return {
        playerId: playerId
    }
}

拨打ajax电话? 我的点击方法有效,我得到了我的玩家ID。然后我尝试进行网格调用。

function loadPlayerStats() {
    var grid = $("#PlayerStats").data("playerStats");
    alert(grid); // returns undefined
    //grid.ajaxRequest(); this didnt work either
    grid.dataSource.read(); // Cannot read property 'dataSource' of undefined
}

行动方法 除非我关闭自动搜索,否则永远不会被调用

public ActionResult PlayerStats_Read_Bound([DataSourceRequest]DataSourceRequest request, int playerId)
        {
            // some code
            return Json(result)
        }

1 个答案:

答案 0 :(得分:1)

试试吧:

var grid = $("#PlayerStats").data("kendoGrid");

然后:

grid.dataSource.read();