MVC 4 WebGrid DropDownLIstFor selectedValue

时间:2013-08-22 15:50:45

标签: asp.net-mvc-4 webgrid dropdownlistfor

我在局部视图中有一个网格。每列都有显示和编辑模式。显示模式使用标签显示数据。当用户选择“编辑”时,隐藏显示模式并显示编辑模式。除了第二列DropDownListFor中的“selectValue:”外,一切正常。 DDLF显示选择列表,但以第一个值开头,而不是使用selectedValue。我已经尝试了我能想到的每一个变化。有任何想法吗?谢谢你看看这个。

@model ANet.Areas.IMS.Models.DVModel
@using System.Web.Helpers

@{var grid = new WebGrid(Model.DMRN);}    

<div  id="gridMRN" style=" padding:20px; " >
@grid.GetHtml(
    tableStyle: "webgrid-table",
    headerStyle: "webgrid-header",
    footerStyle: "webgrid-footer",
    alternatingRowStyle: "webgrid-alternating-row",
    selectedRowStyle: "webgrid-selected-row",
    rowStyle: "webgrid-row-style",
    mode: WebGridPagerModes.All,
    columns:
        grid.Columns(
            grid.Column("PK_ID", "MRN ID", format: @<text><span class="display-mode">@item.PK_ID</span><label id="lblPK_ID" class="edit-mode">@item.PK_ID</label><input type="hidden" name="PK_ID" id="PK_ID" value="@item.PK_ID" /><input type="hidden" name="fk_ID" id="fk_ID" value="@item.fk_ID" /> </text>),
            grid.Column("fk_MFID", "MF", format: @<text><span class="display-mode"><label id="lblfk_MFID">@item.v_L_MF.MFN</label></span>@Html.DropDownListFor(m => m.fk_MFID, new SelectList(Model.L_MF, "Value", "Text", item.fk_MFID), new { @class = "edit-mode" })</text>, style: "webgrid-col1Width"),
            grid.Column("MRN", "MRN", format: @<text>  <span  class="display-mode"><label id="lblMRN">@item.MRN</label></span><input type="text" id="MRN" value="@item.MRN" class="edit-mode" /></text>, style: "webgrid-col3Width"),                
            grid.Column("Action", format: @<text>
                            <button class="edit-MRN display-mode" >Edit</button>
                            <button class="save-MRN edit-mode"  >Save</button>
                            <button class="cancel-MRN edit-mode" >Cancel</button>
                        </text>,  style: "webgrid-col3Width" , canSort: false)))
</div>

<script type="text/javascript" >
$(function () {
    $('thead tr th:nth-child(1), tbody tr td:nth-child(1)').hide();
    $('.edit-mode').hide();
    $('.edit-MRN, .cancel-MRN').on('click', function () {
        var tr = $(this).parents('tr:first');
        tr.find('.edit-mode, .display-mode').toggle();
        $("#MRNAddFrm").toggle();
    });

    $('.save-MRN').on('click', function () {
        var tr = $(this).parents('tr:first');
        var PK_ID = tr.find("#PK_ID").val();
        var fk_ID = tr.find("#fk_ID").val();
        var fk_MFID = tr.find("#fk_MFID").val();
        var MRN = tr.find("#MRN").val();
        tr.find("#lblPK_ID").text(PK_ID);
        tr.find("#lblfk_ID").text(fk_ID);
        tr.find("#lblfk_MFID").text(fk_MFID);
        tr.find("#lblMRN").text(MRN);
        tr.find('.edit-mode, .display-mode').toggle();
        var MRM =
        {
            "PK_ID": PK_ID,
            "fk_ID": fk_ID,
            "fk_MFID": fk_MFID,
            "MRN": MRN
        };
        $.ajax({
            url: '/IMS/EditMRN/',
            datatype: 'json',
            data: JSON.stringify(MRN),
            type: 'POST',
            contentType: 'application/json; charset=utf-8'
        })

        .success(function (data) {
            $('#gridMRN').replaceWith(data);
        });

        $("#MRNAddFrm").toggle();
    });
})
</script>

视图模型

using IMSModel;

namespace ANet.Areas.IMS.Models
{
public class DVModel
{
    private IMSEntities db = new IMSEntities();

    public DVModel()
    {
        //Define default values here
        this.PageSize = 10;
        this.NumericPageCount = 10;
    }

    ....
    [Display(Name = "MF")]
    public int fk_MFID { get; set; }
    [Display(Name = "MRN")]
    public Nullable<int> MRN { get; set; }

    .... 

    public SelectList L_MF { get; set; }
    ..... other selectlists
    public IEnumerable<v_L_MF> v_L_MF { get; set; }
    ..... other ienumerables lists

    //Sorting-related properties
    public string SortBy { get; set; }
    public bool SortAscending { get; set; }
    public string SortExpression   //requires using System.Linq.Dynamic; on the controller
    {
        get
        {
            return this.SortAscending ? this.SortBy + " asc" : this.SortBy + " desc";
        }
    }

    //Paging-related properties
    public int CurrentPageIndex { get; set; }
    public int PageSize { get; set; }
    public int PageCount
    {
        get
        {
            return Math.Max(this.TotalRecordCount / this.PageSize, 1);
        }
    }
    public int TotalRecordCount { get; set; }
    public int NumericPageCount { get; set; }
  }
}

加载视图模型的方法

private DVModel GetDVModel(int id)
    {
        var _viewModel = new DVModel
        {
            .... other lists
            v_L_MF = unitOfWork.MFRepository.Get().OrderBy(o => o.MFN),

            .... other lookup lists
            L_MF = new SelectList(unitOfWork.MFRepository.Get().OrderBy(o => o.MFN), "PK_MFID", "MFN", String.Empty),

        };

        return _viewModel;
    }

1 个答案:

答案 0 :(得分:0)

您的DropdownlistFor调用将是问题。 请检查以下site。 您应该在下拉列表级别上提供默认值,而不是在选择列表级别上。

我不记得真正的呼唤,但应该尝试这样的事情:

@Html.DropDownListFor(m => m.fk_MFID, new SelectList(Model.L_MF, "Value", "Text", item.fk_MFID), new { @class = "edit-mode" }, "Default value")