在编辑页面的表格中的每一行中设置下拉列表的选定值

问题描述 投票:-1回答:4

我有一个可编辑的表,其中每行都有下拉列表来更新行值。如何在页面加载时为编辑页面上的行设置下拉列表选定值。

我的HTML代码:

 foreach (var item in Model)
 {
    <tr>
        <td>
        @Html.DropDownList("TeamA", null, "--Select--", htmlAttributes: new { @id = "teamA_" + item.ScheduleID, @class="form-control" })
        </td>
        <td>
        @Html.DropDownList("TeamB", null, "--Select--", htmlAttributes: new { @id = "teamB_" + item.ScheduleID, @class = "form-control"})
        </td>
    </tr>
}   

分别通过ViewBag.TeamA和ViewBag.TeamB填充表格选项,如下所示

ViewBag.TeamA = new SelectList(db.Teams.Where(s => s.RoleID == Id).ToList(), "TeamID", "Name");
ViewBag.TeamB = new SelectList(db.Teams.Where(s => s.RoleID == Id).ToList(), "TeamID", "Name");
c# asp.net-mvc razor asp.net-mvc-5
4个回答
1
投票

在你不确定剃须刀怎么做的情况下使用Html,比如在这种情况下使用带循环的Html下拉列表。例如

<select>        
        @foreach (var v in ViewBag.DropdownData)
        {
            <option value="@v.ID" @(v.ID == item.DDLID ? "selected" : "")>@v.Name</option>
        }
    </select>  

0
投票

您必须定义DorpDownList的列表,并且您需要定义所选项目,如下所示。

@Html.DropDownList("TeamA", new List<SelectListItem> { new SelectListItem {  Text = "P1", Value = "1"}, new SelectListItem { Text = "P2", Value = "2", Selected = true} }, "--Select--", new { value = "2"})

请注意,我已经生成了列表(新列表)。


0
投票

string.optionLabel中的@Html.DropDownList设置为item.Name可能会有效,假设您在视图中使用您的团队作为模型。

@Html.DropDownList("TeamA", null, item.Name, new {@id = "teamA_" + item.ScheduleID, @class="form-control"})

如果它们有任何值,它应显示正确的值,否则它将为空。


0
投票

谢谢大家的宝贵时间,我通过以下方式解决了这个问题。

 <td>
    <select name="TeamA" >
        <option value="0">--select--</option>
        @foreach (Team t in ViewBag.TeamA)
        {
            <option value="@t.TeamID" @(t.TeamID == item.Team1 ? "selected" : "")>@t.Name</option>
        }
    </select>                                                
</td>

在服务器端

ViewBag.TeamA = db.Teams.Where(s => s.SeriesID == Id).ToList();
© www.soinside.com 2019 - 2024. All rights reserved.