2017-09-06 17 views
0

這可能是一個重複的問題,但我無法在任何地方找到解決方案。 下面是工作的代碼,當我使用單個模型爲對象下拉列表WebGrid DropDownList選定的值?

@Html.DropDownListFor(model => model.LocationId, new SelectList(Model.LocationItems, 
         "Value", "Text",selectedValue: Model.LocationId)) 

上面代碼工作&選擇的值所基於的模型對象即指數爲下拉上是位置編號。

然而,當我使用網絡網格我無法設置爲下拉列表選擇的值一樣

grid.Column(
    header: "Locations", 
    format: (item) => @Html.DropDownList("LocationId", Model.First().LocationItems.Select(l => new SelectListItem 
    { 
     Text = l.Text, 
     Value = l.Value, 
     Selected = ((WebGridRow)item)["LocationId"].ToString() == l.Value 
}))) 

在下拉菜單中選定的值向下總是有指數1,其中所應當LocationId 。

有什麼辦法可以實現這個功能嗎?

+1

您使用'Model.First()',它返回第一個成員。 –

+0

是的,我注意到,有沒有其他的方式來做到這一點,而不使用第一()? – ashveli

回答

1

可以在foreach添加@Html.DropDownList s到grid這樣的:

List<WebGridColumn> columns = new List<WebGridColumn>(); 
foreach (var col in Model) 
{ 
    columns.Add(
    new WebGridColumn() 
    { 
    header: "Locations", 
    Format = (item) => @Html.DropDownList("LocationId", @col.LocationItems.Select(l => new SelectListItem 
     { 
      Text = l.Text, 
      Value = l.Value, 
      Selected = ((WebGridRow)item)["LocationId"].ToString() == l.Value 
     } 
    )});  
} 

@grid.GetHtml(
     columns: columns