public ActionResult UploadFile() { string tableKey = Request["tableKey"]; HttpPostedFileBase file = Request.Files["Filedata"]; SystemMessages sysMsg = new SystemMessages(); using (TScope ts = new TScope()) { try { DataSet ds = ExcelHelper.ReadExcel(file.InputStream, true); if (ds.Tables.Count > 0) { DataTable dt = ds.Tables[0]; FieldCategory fc = new FieldCategory(tableKey); foreach (DataRow dr in dt.Rows) { fc.ClearAllFieldsData(); FieldInfoCollecton fields = fc.VisibleFields; Dictionary<string, object> dicData = new Dictionary<string, object>(); foreach (DataColumn dc in dt.Columns) { var fi = fields.Where(p => p.DisplayName == dc.ColumnName).SingleOrDefault(); if (fi != null) { dicData.Add(fi.FieldName, dr[dc.ColumnName]); } } if (dicData.Count == 0) { throw new Exception("Upload Error: can not match data."); } else { CostingMasterDetailData cmdd = new CostingMasterDetailData(fc, dicData); fc.CheckDataType(dicData, sysMsg); cmdd.CheckData(sysMsg); if (sysMsg.isPass) { int id = dt.Columns.Contains("ID") ? ParseHelper.Parse<int>(dr["ID"]) : 0; if (id > 0) { cmdd.Update(id); } else { cmdd.Add(); } } else { ts.Rollback(); break; } } } } } catch (Exception ex) { ts.Rollback(); sysMsg.isPass = false; sysMsg.Messages.Add("Error", ex.Message); } } var result = new { success = sysMsg.isPass, errMessage = sysMsg.MessageString }; return Json(result); }
public JsonResult SaveData() { SystemMessages sysMsg = new SystemMessages(); int id = 0; string postData = Request["postData"]; if (!String.IsNullOrWhiteSpace(postData)) { System.Web.Script.Serialization.JavaScriptSerializer jss = new System.Web.Script.Serialization.JavaScriptSerializer(); Dictionary<string, object> jsonData = jss.Deserialize<Dictionary<string, object>>(postData) as Dictionary<string, object>; string dataId = Convert.ToString(jsonData["dataId"]); Int32.TryParse(dataId, out id); FieldCategory category = new FieldCategory(Convert.ToString(jsonData["categoryName"])); Dictionary<string, object> data = jsonData["data"] as Dictionary<string, object>; using (TScope ts = new TScope()) { try { CostingMasterDetailData cmdd = new CostingMasterDetailData(category, data); category.CheckDataType(data, sysMsg); cmdd.CheckData(sysMsg); if (sysMsg.isPass) { if (id > 0) { cmdd.Update(id, true); } else { id = cmdd.Add(); } } } catch (Exception ex) { ts.Rollback(); sysMsg.isPass = false; sysMsg.Messages.Add("Error", ex.Message); } } } var jsonResult = new { DataId = id, success = sysMsg.isPass, errMessage = sysMsg.MessageString }; return Json(jsonResult); }