2013-07-08 2 views
1

Проблема заключается в том, что помощник Html.DropDownLisTFor использует модель страницы, а не текущий элемент строки. Есть ли способ обойти это?Могу ли я использовать DropDownListFor в WebGrid?

Это мой ViewModel:

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, но это не правильно назначить "Selected"

Спасибо заранее за любые советы.

Проблема была устранена путем добавления временного типа к модели и определения ее значения статуса в другом столбце. Это можно было бы улучшить, выполнив всю работу в одном столбце, я не мог понять, как без ошибок? Моего 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>), 

Надеется, что это помогает кому-то или даже может быть улучшено до совершенства кто-то другим!

+0

Я нашел это, выполнив поиск. У меня нет времени, чтобы попробовать, но, возможно, это поможет вам: http://www.seanrowland.com/?p=69 – Splendor

+0

Спасибо @Splendor :-) В основном я добавил новую временную переменную модели называется GridStatus и использовать это вместо статуса. В любом столбце в сетке он должен быть назначен item.Status. – AntBoots

ответ

1

В основном я добавил новую временную переменную модели GridStatus и использовал ее вместо статуса. В любом столбце в сетке он должен быть присвоен item.Status