Asp.net mvc 4 用于selectedValue的MVC 4 WebGrid DropDownList
我在局部视图中有一个web网格。每列都有一个显示和编辑模式。显示模式使用标签显示数据。当用户选择“编辑”时,显示模式被隐藏,编辑模式被显示。除了第二列DropDownList for中的“selectValue:”之外,一切都正常。DDLF显示selectlist,但从第一个值开始,而不是使用selectedValue。我已经尝试了我能想到的每一种变化。有什么想法吗?谢谢你看这个Asp.net mvc 4 用于selectedValue的MVC 4 WebGrid DropDownList,asp.net-mvc-4,webgrid,dropdownlistfor,Asp.net Mvc 4,Webgrid,Dropdownlistfor,我在局部视图中有一个web网格。每列都有一个显示和编辑模式。显示模式使用标签显示数据。当用户选择“编辑”时,显示模式被隐藏,编辑模式被显示。除了第二列DropDownList for中的“selectValue:”之外,一切都正常。DDLF显示selectlist,但从第一个值开始,而不是使用selectedValue。我已经尝试了我能想到的每一种变化。有什么想法吗?谢谢你看这个 @model ANet.Areas.IMS.Models.DVModel @using System.Web.Hel
@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>
您的DropDownlist用于呼叫将解决此问题。 请让我们检查以下内容。 您应该在dropdownlist级别提供默认值,而不是选择列表级别 我记不清真正的电话号码了,但应该试试这样:
@Html.DropDownListFor(m => m.fk_MFID, new SelectList(Model.L_MF, "Value", "Text", item.fk_MFID), new { @class = "edit-mode" }, "Default value")
您可以显示视图模型的定义吗?
ANet.Areas.IMS.Models.DVModel
。这是视图模型:我注意到您正在将选择列表中的选定值设置为item.fk_MFID
,什么是item
?我相信它指的是那行数据。我还尝试了Model.DMRN.fk_MFID和DMRN.fk_MFID,但都不起作用。它还与该列上的标签一起使用,该列按预期显示。谢谢,我会尝试一下,并让您知道我发现了什么。
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;
}
@Html.DropDownListFor(m => m.fk_MFID, new SelectList(Model.L_MF, "Value", "Text", item.fk_MFID), new { @class = "edit-mode" }, "Default value")