2017-07-25 11 views
0

私は多くの検索を行ってきましたが、どのような例も見つからないようです。Telerik MVC階層グリッド、エディタポップアップ、JavaScriptイベントで親データを取得

私は非常に大きなtelerik mvc階層グリッドを持っているので、ここでコードを簡略化します。ここでは、いくつかのレベルの下に子テンプレートがあります、私は前のレベルの親情報が必要です。

<script id="leagueTemplate" type="text/kendo-tmpl"> 
       @(Html.Kendo().Grid<LeagueViewModel>() 
      .Name("grid_#=LeagueTypeId#") 
      .ToolBar(toolbar => 
      { 
       toolbar.Create().Text("Add New League(Window)"); 
      }) 
      .Events(e => e.Edit("leagueEdit")) // this function runs 
      .DataSource(dataSource => dataSource 
       .Ajax() 
       .Model(model => model.Id(p => p.LeagueID)) 
       .Read(read => read.Action("Bound_League_Read", "Configuration", new { _leagueTypeId = "#=LeagueTypeId#" })) 
       .Create(create => create.Action("League_Create", "Configuration").Data("getHeirarchyData")) // this function doesnt run 
      ) 
       ) 
</script> 

      function getHeirarchyData() { 
        console.log("get heirachy data"); // never runs 
      } 

      function leagueEdit(e) { 

       // this runs 
       // not sure how to get parent data from e 

       } 

答えて

0

あり、これを解決するための良い方法かもしれないが、もしそうなら、私はあなたの答えをチェックしますが、おそらくこれはその間に誰かを助けます。

これは、テンプレートの構文文字列として値にアクセスする必要があるため、文字列値だけを除いて優秀に機能するモデルのデフォルト値を設定することで解決しました。だから私はちょうどモデルに私の階層フィールドの文字列値の同等を追加しました。私は編集機能を呼び出したとき

  .Model(model => 
       { 
       model.Id(p => p.LeagueID); 
       model.Field(l => l.strSportId).DefaultValue("#=SportId#"); 
       model.Field(l => 
       l.strLeagueTypeId).DefaultValue("#=LeagueTypeId#"); 
       } 
      ) 

その後、私はこのような値を得ることができます:

function leagueEdit(e) { 
    var sportId = parseInt(e.model.strSportId); 
    var leagueTypeId = parseInt(e.model.strLeagueTypeId); 
} 
関連する問題