Hello,
I am using the Kendo UI Grid control with the following key features activated:
I am using the Kendo UI Grid control with the following key features activated:
- Custom Toolbar
- Batch Editing
I would like to get a string from a textbox in the custom toolbar when the user saves the changes made in grid. Here my code:
And my Controller look like this:
To summarize, I need to pass the data in the txtVersionNumber into the db.AddCustomerTrackAndTraceTypeLink() method.
Thanks in advance,
Paul
@(Html.Kendo().Grid(Model.TrackAndTraceTypeList) .Name("Grid") .Columns(columns => { columns.Bound(item => item.CustomerLevel).Title("Customer<br/>Level").Width(80); columns.Bound(item => item.TrackAndTraceTypeId).Title("T&T<br/>Type Id").Width(80); columns.Bound(item => item.TrackAndTraceTypeName).Title("T&T Type<br/>Name"); columns.Bound(item => item.Level).Title("Level").Width(60); columns.Bound(item => item.Description).Title("Description"); columns.Bound(item => item.MTC).Title("MTC").Width(60); columns.Bound(item => item.Failure).Title("Failure").Width(80); columns.Bound(item => item.Success).Title("Success").Width(80); columns.Bound(item => item.Multiple).Title("Multiple").Width(80); columns.Bound(item => item.Photo).Title("Photo").Width(60);; columns.Bound(item => item.MessageTypeId).Title("Msg<br/>Type Id").Width(80); }) .ToolBar(toolbar => { toolbar.Template(@<text> <div class="k-toolbar k-grid-toolbar k-grid-top"> <table style="width:400px"> <tr> <td> <a class="k-button k-button-icontext k-grid-save-changes" href="javascript:void(0)"> <span class="k-icon k-update"></span>Save changes </a> <a class="k-button k-button-icontext k-grid-cancel-changes" href="javascript:void(0)"> <span class="k-icon k-cancel"></span>Cancel changes </a> </td> <td> <label class="category-label" for="category">Version No: <input id="txtVersionNumber" type="text" style="width: 80px" /> </label> </td> </tr> </table> </div> </text>); }) .Editable(editable => editable.Mode(GridEditMode.InCell)) .Groupable() .Pageable(page => page.PageSizes(new int[] { 10, 20, 30, 50 })) .Sortable() .Filterable() .Selectable(s => s.Mode(GridSelectionMode.Single)) .DataSource(dataSource => dataSource .Ajax() .Batch(true) .ServerOperation(false) .Events(events => events.Error("error_handler")) .Model(model => { model.Id(ttt => ttt.TrackAndTraceTypeId); model.Field(ttt => ttt.TrackAndTraceTypeId).Editable(false); model.Field(ttt => ttt.TrackAndTraceTypeName).Editable(false); model.Field(ttt => ttt.CustomerLevel).Editable(false); model.Field(ttt => ttt.Level).Editable(false); model.Field(ttt => ttt.MessageTypeId).Editable(false); }) .PageSize(20) .Read(read => read.Action("TrackAndTrace_Read", "Customers")) .Update(update => update .Action("TrackAndTrace_Update", "Customers") .Data("versionNumber")) ) .Resizable(resize => resize.Columns(true)))</div><script type="text/javascript"> function error_handler(e) { if (e.errors) { var message = "Errors:\n"; $.each(e.errors, function (key, value) { if ('errors' in value) { $.each(value.errors, function () { message += this + "\n"; }); } }); alert(message); } } function versionNumber(){ return {version: $("#txtVersionNumber").val()}; }</script>public ActionResult TrackAndTrace_Read([DataSourceRequest] DataSourceRequest request) { // Get the customer Id from the URL int customerIdValue = 0; if (Request.UrlReferrer.Segments.Length > 1) { string customerId = Request.UrlReferrer.Segments[Request.UrlReferrer.Segments.Length - 1]; int.TryParse(customerId, out customerIdValue); } var data = GetCustomerTrackAndTraceTypeDetails(customerIdValue, request.Page).TrackAndTraceTypeList.AsEnumerable(); return Json(data.ToDataSourceResult(request)); } [AcceptVerbs(HttpVerbs.Post)] public ActionResult TrackAndTrace_Update([DataSourceRequest] DataSourceRequest request, [Bind(Prefix = "models")]IEnumerable<CustomerTrackAndTraceType> trackAndTraceTypes) { if (trackAndTraceTypes != null && ModelState.IsValid) { int customerIdValue = 0; if (Request.UrlReferrer.Segments.Length > 1) { string customerId = Request.UrlReferrer.Segments[Request.UrlReferrer.Segments.Length - 1]; int.TryParse(customerId, out customerIdValue); } Customer currentCustomer = db.Customers.Find(customerIdValue); foreach (var tttItem in trackAndTraceTypes) { // Save the Track And Trace Type Updates db.AddCustomerTrackAndTraceTypeLink(tttItem.TrackAndTraceTypeId, tttItem.CustomerId, tttItem.Description, tttItem.MTC, tttItem.Failure, tttItem.Multiple, tttItem.Success, tttItem.Photo, User.Identity.Name); // record who made the change // Update the customer level for the Grid tttItem.CustomerLevel = currentCustomer.Name; } } return Json(trackAndTraceTypes.ToDataSourceResult(request, ModelState)); }Thanks in advance,
Paul