2013-07-08 18 views
1

我的問題似乎是Html.DropDownLisTFor助手使用頁面模型,而不是當前行項目。有沒有解決的辦法?我可以在WebGrid中使用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的,但這並不正確分配 「選定」

謝謝提前任何建議。

我的問題是通過向模型添加一個臨時類型並在另一列中將狀態值賦予它來解決的。這可以通過在一列中完成所有工作來改進,我無法弄清楚如何不出錯? 我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

Thanks @Splendor :-)基本上我在模型中添加了一個新的臨時變量稱爲GridStatus並使用它來代替Status。在網格中的任何列中,必須將其分配給item.Status。 – AntBoots

回答

1

基本上,我在稱爲GridStatus的模型中添加了一個新的臨時變量,並使用它來代替Status。在網格中的任何一列中,它必須分配給item.Status

相關問題