これを行う方法の例がいくつか見つかりましたが、どれも私のために働いていません。ここでTelerik/Kendo MVCグリッド、オンデマンドでページロードではありません。
は私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)
)
オープンモーダル
私は、ページの読み込みを防ぐ自動バインド(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)
}
あなたはグリッド上のセレクタを間違って使用していますが、 'var grid = $("#PlayerStats ")data(" playerStats ");は' var grid = $( "#PlayerStats")でなければなりません。 '(PlayerStatsはあなたが剣道グリッドをレンダーしたいHTML要素の正しいIDであると仮定します)。 – Sandman