0
私は剣道のMVC階層グリッドを持っています。私の例は読みやすくするために単純化されています。Kendo MVC Grid Createのポップアップエディタテンプレートでモデルが空です。デフォルト値はありません。
@(Html.Kendo().Grid<LeagueViewModel>(Model.Leagues)
.Name("grid_#=LeagueTypeId#")
.Columns(columns => { })
.ToolBar(toolbar =>
{
toolbar.Create().Text("Add New League(Window)");
})
.Editable(editable => editable.Mode(GridEditMode.PopUp)
.TemplateName("LeagueEdit")
.Window(w =>
{
w.Position(p => p.Top(200)); // position not working, need to center more vertically
w.Width(800);
}
)
)
.Events(e => e.Edit("leagueEdit"))
.DataSource(dataSource => dataSource
.Server()
.Model(model =>
{
model.Id(p => p.LeagueID);
model.Field(l => l.strSportId).DefaultValue("#=SportId#"); // set default value with parent grid data
model.Field(l => l.strLeagueTypeId).DefaultValue("#=LeagueTypeId#"); // set default value with parent grid data
}
)
.Read(read => read.Action("Bound_League_Read", "Configuration", new { _leagueTypeId = "#=LeagueTypeId#" }))
.Create(create => create.Action("League_Create", "Configuration"))
)
)
ここは私のjavascriptイベントハンドラです。作成ボタンがクリックされた後にハンドラからe.modelオブジェクトを観察すると、DefaultValue( "#= ParentProperty#")でグリッド内で先に設定したデフォルト値があります。
function leagueEdit(e) {
// setting these with default value on model,
// had to have string variants to pass over because template expression syntax
e.model.SportId = parseInt(e.model.strSportId);
e.model.LeagueTypeId = parseInt(e.model.strLeagueTypeId);
}
私のポップアップテンプレートが開きますLeagueEdit.cshtmlは、モデルがデータを持ちません。モデルにデータをどのように取得するのですか?私は、親グリッドからの値を必要とする要素をポップアップエディタに持っています。
<p>sport: @Model.SportId</p> <!-- value does not carry over -->
<p>leaguetype: @Model.LeagueTypeId</p> <!-- value does not carry over -->