View
Controller
Model
JS
DOWNLOAD DEMO
@(Html.Kendo().Grid<MvcApplication1.Models.TestModels>()
.Name("Grid")
.Columns(columns =>
{
columns.Bound(p => p.ID);
columns.Bound(p => p.Name);
columns.Bound(p => p.IsActive);
columns.ForeignKey(p => p.FID, (System.Collections.IEnumerable)ViewData["TestList"], "Value", "Text");
})
.ToolBar(toolBar => toolBar.Save())
.Editable(editable => editable.Mode(GridEditMode.InCell))
.Pageable()
.Sortable()
.Scrollable()
.Filterable()
.Events(e => e.Edit("onGridEdit"))
.DataSource(dataSource => dataSource
.Ajax()
.Batch(true)
.ServerOperation(false)
.Events(events => events.Error("errorHandler"))
.Model(model =>
{
model.Id(p => p.ID);
model.Field(p => p.ID).Editable(false);
})
.Read(read => read.Action("ForeignKeyColumn_Read", "Home"))
.Update(update => update.Action("ForeignKeyColumn_Update", "Home"))
)
)
namespace MvcApplication1.Controllers { public class HomeController : Controller { public ActionResult Index() { List<SelectListItem> items = new List<SelectListItem>(); for (int i = 1; i < 6; i++) { SelectListItem item = new SelectListItem(); item.Text = "text" + i.ToString(); item.Value = i.ToString(); items.Add(item); } ViewData["TestList"] = items; return View(); } public ActionResult ForeignKeyColumn_Read([DataSourceRequest] DataSourceRequest request) { List<TestModels> models = new List<TestModels>(); for (int i = 1; i < 6; i++) { TestModels model = new TestModels(); model.ID = i; model.Name = "Name" + i; if (i % 2 == 0) { model.IsActive = true; model.FID = i; } models.Add(model); } return Json(models.ToDataSourceResult(request)); } [AcceptVerbs(HttpVerbs.Post)] public ActionResult ForeignKeyColumn_Update([DataSourceRequest] DataSourceRequest request, [Bind(Prefix = "models")]IEnumerable<TestModels> tests) { if (tests != null && ModelState.IsValid) { // Save/Update logic comes here } return Json(ModelState.ToDataSourceResult()); } } }
namespace MvcApplication1.Models { public class TestModels { public int ID { get; set; } public string Name { get; set; } public bool IsActive { get; set; } public int FID { get; set; } } }
<script type="text/javascript"> function errorHandler(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 onGridEdit(arg) { if (arg.container.find("input[name=IsActive]").length > 0) { arg.container.find("input[name=IsActive]").click(function () { if ($(this).is(":checked") == false) { arg.container.next().html(""); arg.model.FID = "0"; } else { arg.model.IsActive = true; $("#Grid").data("kendoGrid").closeCell(arg.container); $("#Grid").data("kendoGrid").editCell(arg.container.next()); } }); } if (arg.container.find("input[name=FID]").length > 0) { if (arg.model.IsActive == false) { $("#Grid").data("kendoGrid").closeCell(arg.container) } } } </script>
DOWNLOAD DEMO
Hi there,
ReplyDeleteI am trying to do that, but with a SQL Server database which is connected via Linq-to-Sql. I dont find the way to populate de combobox/dropdownlist..
I have solved the problem.. thanks anyway.
ReplyDeletewant to show the answer incase anyone googles this? http://xkcd.com/979/
ReplyDeleteI have solved the problem.. thanks anyway.
ReplyDelete