I'm having trouble saving the value that's selected in the drop down list on a grid. It's as though the model doesn't update. The drop down list comes up when I click the edit button. The drop down is populated, but when I hit update and the code makes it to UpdateAdHocOrderDetails, but both the MailingListId and MailingListName are what they were before the update. What have I missed wiring up or what did I wire up incorrectly?
Code in my view....
<div class="content">
@(Html.Kendo()
.Grid<IndexViewModel>()
.Name("kendoGrid")
.Columns(columns =>
{
columns.Bound(c => c.OrderDetail.Isbn).Title("ISBN").Width(135);
columns.Bound(c => c.OrderDetail.Title).Width(300);
columns.Bound(c => c.OrderDetail.Author).Width(125);
columns.Bound(c => c.OrderDetail.CartonQuantity).Title("Carton QTY").Width(140);
columns.Bound(c => c.OrderDetail.OrderedQuantity).Title("QTY").Width(90);
columns.Bound(c => c.OrderDetail.MailingListName).Title("Mailing List").ClientTemplate("#=OrderDetail.MailingListName#").Width(90);
columns.Bound(c => c.OrderDetail.OnHand).Title("On Hand QTY").Width(90);
columns.Bound(c => c.OrderDetail.AMROM).Title("ROM").Width(140);
columns.Bound(c => c.OrderDetail.SuggestedQuantity).Title("Recommended Order QTY").Width(140);
columns.Command(command => { command.Edit(); command.Destroy(); }).Width(150);
})
.ToolBar(toolbar => toolbar.Custom().Text("Clear All Filters").Url("#").HtmlAttributes(new { onclick = "ClearAllFilters('kendoGrid')", @class = "k-primary" }))
.Scrollable()
.Sortable()
.Filterable()
.Editable(editable => editable.Mode(GridEditMode.InLine).ConfirmDelete("test").DisplayDeleteConfirmation(true))
.Pageable(pageable => pageable
.Refresh(true)
.ButtonCount(5))
.DataSource(dataSource => dataSource
.Ajax()
.PageSize(12)
.Model(model => {
model.Id(p => p.OrderDetail.OrderDetailId);
model.Field(p => p.OrderDetail.OrderDetailId).Editable(false);
model.Field(p => p.OrderDetail.Isbn).Editable(false);
model.Field(p => p.OrderDetail.Title).Editable(false);
model.Field(p => p.OrderDetail.Author).Editable(false);
model.Field(p => p.OrderDetail.CartonQuantity).Editable(false);
model.Field(p => p.OrderDetail.OrderedQuantity).Editable(true);
model.Field(p => p.OrderDetail.MailingListName).Editable(true);
model.Field(p => p.OrderDetail.OnHand).Editable(false);
model.Field(p => p.OrderDetail.AMROM).Editable(false);
model.Field(p => p.OrderDetail.SuggestedQuantity).Editable(false);
})
.Sort(sort => sort.Add(order => order.OrderDetail.OrderDetailId).Descending())
.Read(read => read.Action("GetAdHocOrderDetails", "Adhoc").Data("gridInfo"))
.Update(update => update.Action("UpdateAdHocOrderDetails", "Adhoc").Data("gridInfo"))
.Destroy(update => update.Action("RemoveAdHocOrderDetails", "Adhoc").Data("gridInfo"))
.Events(events => {
events.Change("OnGridChange");
events.Error("error_handler");
})
.ServerOperation(false))
.Events(events => events.DataBound("onDataBound"))
.Resizable(resize => resize.Columns(true))
)
</div>
Code in Views\Shared\EditorTemplates\MailingListEditor.cshtml.....
@(
Html.Kendo().DropDownListFor(model => model.OrderDetail.MailingListName)
.Name("MailingListName")
.DataTextField("MailingListName")
.DataValueField("MailingListId")
.OptionLabel("Select a mailing list...")
.DataSource(source =>
{
source.Read(read => { read.Action("GetMailingLists", "Adhoc"); });
}))
)
Code in the model....
[UIHint("MailingListEditor")]
public string MailingListName { get; set; }
public int MailingListId { get; set; }
Code in the controller....
[AcceptVerbs(HttpVerbs.Post)]
[AuthorizeUser(AccessLevel = "Publisher")]
public ActionResult UpdateAdHocOrderDetails([DataSourceRequest] DataSourceRequest request, IndexViewModel lineItem, int orderId)
{
}