2017-07-05 14 views
1

これを行う方法の例がいくつか見つかりましたが、どれも私のために働いていません。ここで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) 
     } 
+0

あなたはグリッド上のセレクタを間違って使用していますが、 'var grid = $("#PlayerStats ")data(" playerStats ");は' var grid = $( "#PlayerStats")でなければなりません。 '(PlayerStatsはあなたが剣道グリッドをレンダーしたいHTML要素の正しいIDであると仮定します)。 – Sandman

答えて

1

をオフにしない限り、単に試すと呼ばれることは決してありません:

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

、その後:

grid.dataSource.read(); 
+0

これは、$( "#PlayerStats")と同様に動作します。getKendoGrid();なぜ私は変数名を使用して公式のドキュメントで例を見てきたかわからない。 "kendoGrid"がどのマップにマップされているかわかりません。 – SomeRandomDeveloper

関連する問題