VIEW =======================================
@(Html.Infragistics().Grid(Model.Addresses.AsQueryable()) .ID("ba_addresses") .Width("100%") .AutoGenerateColumns(false) .PrimaryKey("AddressID") .Columns(column => { column.For(x => x.AddressID).HeaderText("AddressID").Width("5%"); column.For(x => x.Purpose).HeaderText("Purpose").Width("10%"); column.For(x => x.AddressDetails).HeaderText("Address Details").Width("25%"); column.For(x => x.City).HeaderText("City").Width("15%"); column.For(x => x.Province).HeaderText("Province").Width("5%"); column.For(x => x.Country).HeaderText("Country").Width("5%"); column.For(x => x.Zipcode).HeaderText("Postal Code").Width("10%"); column.For(x => x.Email).HeaderText("Email").Width("14%"); column.For(x => x.Phone).HeaderText("Phone").Width("8%"); column.For(x => x.Fax).HeaderText("Fax").Width("8%"); }) .Features(feature => { feature.Updating().EnableDeleteRow(false).ColumnSettings(cs => { cs.ColumnSetting().ColumnKey("Purpose").Required(true).EditorType(ColumnEditorType.Combo).ComboEditorOptions(ad => ad.DataSource(Model.AddressPurposes).ValueKey("Value").TextKey("Value")); cs.ColumnSetting().ColumnKey("AddressDetails").Required(true); cs.ColumnSetting().ColumnKey("City").Required(true); cs.ColumnSetting().ColumnKey("Zipcode").Required(true); cs.ColumnSetting().ColumnKey("Province").Required(true); cs.ColumnSetting().ColumnKey("Country").Required(true); }); feature.Sorting(); feature.Filtering(); feature.Resizing().AllowDoubleClickToResize(true); feature.Hiding(); feature.ColumnMoving(); feature.Paging().PageSize(15).Type(OpType.Local).ShowPagerRecordsLabel(true); }) .UpdateUrl(Url.Action("BAAddressSaveData")) .DataBind() .Render())
CONTROLLER ACTION TO SAVE/UPDATE DATA ================================================ public ActionResult BAAddressSaveData() { var response = new Dictionary(); if (ModelState.IsValid) { var ba = new Address(); GridModel gridModel = new GridModel(); List> transactions = gridModel.LoadTransactions
(HttpContext.Request.Form["ig_transactions"]); foreach (Transaction
t in transactions) { switch (t.type) { //ADD case "newrow": Tuple opResult; ba.BAKey = Convert.ToInt32(Request.UrlReferrer.Segments[3]); ba.Purpose = t.row.Purpose; ba.AddressDetails = t.row.AddressDetails; ba.City = t.row.City; ba.Province = t.row.Province; ba.Zipcode = t.row.Zipcode; ba.Country = t.row.Country; ba.Phone = t.row.Phone; ba.Fax = t.row.Fax; ba.Email = t.row.Email; opResult = _repositoryAddr.Add(ba); response.Add(opResult.Item1 ? "Success" : "Fail", opResult.Item2); break; //EDIT case "row": Tuple opResult1; ba.AddressID = t.row.AddressID; ba.BAKey = Convert.ToInt32(t.row.BAKey); ba.Purpose = t.row.Purpose; ba.AddressDetails = t.row.AddressDetails; ba.City = t.row.City; ba.Province = t.row.Province; ba.Zipcode = t.row.Zipcode; ba.Country = t.row.Country; ba.Phone = t.row.Phone; ba.Fax = t.row.Fax; ba.Email = t.row.Email; opResult1 = _repositoryAddr.Edit(ba); response.Add(opResult1.Item1 ? "Success" : "Fail", opResult1.Item2); break; } } } else response.Add("Fail", "Form validation Errro!"); JsonResult result = new JsonResult(); result.Data = response; return result; }