1

私の問題は、Html.DropDownLisTFor ヘルパーが現在の行アイテムではなく、ページ モデルを使用しているようです。これを回避する方法はありますか?

これは私のビューモデルです:

 public class DropTest
    {
        public IEnumerable<DropQuestion> DropQuestions { get; set; }
    }
    public class DropQuestion
    {
        public Int32? QuestionNo { get; set; }
        public Int32? Status { get; set; }
        public IEnumerable<SelectListItem> IStatuses { get; set; }
    }

そして、これは私が望むビューです:

@model Blah.ViewModels.DropTest   
@{

    var DGrid = new WebGrid(Model.DropQuestions);
}

@DGrid.GetHtml(
columns: DGrid.Columns(

    DGrid.Column("QuestionNo", "Question No"),
//I need this to work picking up the correct status for the current row??
    DGrid.Column("Status", "StatusFor",
        format: @<text>
        @Html.DropDownListFor(x => x.Status, Model.IStatuses)
   `     </text>),
         )))

DropDownList を使用できますが、これは「選択済み」を正しく割り当てません

アドバイスをよろしくお願いします。

私の問題は、モデルに一時型を追加し、別の列の Status 値を割り当てることで修正されました。これは、すべての作業を 1 つの列で行うことで改善される可能性があります。私の ViewmModel には、次の修正が加えられました。

public class DropTest
{
    public IEnumerable<DropQuestion> DropQuestions { get; set; }
    public Int32 GridStatus { get; set; }
}

とビュー:

DGrid.Column("QuestionNo", "Question No",
         format: ((item) => { Model.GridStatus = item.Status ?? 0; return item.QuestionNo; } )),
DGrid.Column("Status", "StatusFor",
        format: @<text>
        @Html.DropDownListFor(x => x.GridStatus, Model.IStatuses)
        </text>),

これが誰かを助けるか、他の誰かによって完璧に改善されることさえ願っています!

4

1 に答える 1

1

基本的に、GridStatus という新しい一時変数をモデルに追加し、それを Status の代わりに使用します。グリッド内の任意の列内で、item.Status に割り当てる必要があります。

于 2013-11-22T15:35:35.893 に答える