0

グリッドで使用する 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));
    }
4

1 に答える 1

0

グリッドで DDL の列をフォアキーのように設定してみましたか?

このような:

columns.ForeignKey(p => p.yourproperty, (System.Collections.IEnumerable)ViewData["myList"], "Text", "Condition");

コントローラ(ここでは、ドロップダウンリストを埋めるリストを埋めます:

 ViewData["myList"] = myList.Select(e => new
            {
                Text= e.Text,
                Condition= e.Condition 
            });

ポップアップ エディターでは、単純に次のようにします。

 @Html.EditorFor(model=>model.yourproperty)
于 2013-11-04T19:56:32.020 に答える