Telerik/ Kendo MVC 网格,按需加载网格,而不是页面加载
Telerik/ Kendo MVC Grid, Load grid on demand, not on page load
我找到了几个关于如何执行此操作的示例,其中 none 个对我有用。
这是我的 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) 以防止页面加载。用户点击后 link 我用我的网格打开一个模式,需要传入一个参数。
// 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)
}
试一试:
var grid = $("#PlayerStats").data("kendoGrid");
然后:
grid.dataSource.read();
我找到了几个关于如何执行此操作的示例,其中 none 个对我有用。
这是我的 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) 以防止页面加载。用户点击后 link 我用我的网格打开一个模式,需要传入一个参数。
// 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)
}
试一试:
var grid = $("#PlayerStats").data("kendoGrid");
然后:
grid.dataSource.read();