グリッドで使用する ViewModel があります。名前を DivisionVm にしましょう
public class DivisionVm {
public int DivisionId
public string Name
public DateTime StartDate { get; set; }
public string Condition
....
}
モデルを更新する場合は、カスタム エディター テンプレートを使用します。Condition は定義済みの文字列値を使用するため、テンプレートでドロップダウン リストを使用します。
@(Html.Kendo().DropDownListFor(model=>model.Condition)
.DataTextField("Text")
.DataValueField("Condition")
.Events(e => e.Change("change"))
.BindTo(new List<ConditionVm>() {
new ConditionVm() {
Text = "Red",
Condition = "Red"
},
new ConditionVm() {
Text = "Green",
Condition = "Green"
},
new ConditionVm() {
Text = "Green",
Condition = "Green"
}
})
)
ConditionVm は、バインドに使用する単なるビューモデルです
public class ConditionVm
{
public string Text { get; set; }
public string Condition { get; set; }
}
私の問題は、ポップアップ エディターを開くと、ドロップダウン リストに現在の条件値が表示されることです。しかし、リストから別の値を選択すると、剣道は変更を追跡しません。したがって、更新ボタンを押しても、viemodel は更新されません。他のフィールド (名前など) を変更すると、viemodel は更新されますが、これらのフィールドのみが更新されます。条件はそのままです。ドロップダウンリストから別の値を選択した場合でも同じです。
私のコントローラーの更新方法は次のようなものです
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult DivisionGridUpdate([DataSourceRequest] DataSourceRequest request, DivisionVm division)
{
if (division != null && ModelState.IsValid)
{
......
}
return Json(new[] { division }.ToDataSourceResult(request, ModelState));
}