同一样商品,不同颜色和尺码的批量新增

下图是我做的新增商品信息的表单,因为在做服装销售系统时,同样的商品我们往往需要添加几条数据,其他各种的商品信息一样,但是商品的颜色和尺码却不一样,需要通过每一种颜色和尺码就生成一条商品信息,例如:蓝色S码的上衣需要生成一条商品信息,红色XXL码的鞋子需要生成一条商品信息,和蓝色XXL码的商品需要生成一条商品信息……
同一样商品,不同颜色和尺码的批量新增
JQuery部分:
—获取到上面几个输入框的数据
var FundsNum = $("#IsFundsNum").val();//款 号
var Catelist = $("#IsCatelist").val();//名称
var MarMenyer = $("#IsMarMenyer").val();//吊牌价
var MarketMeny = $("#IsMarketMenys").val();//折售后价
var Discount = $("#IsDiscount").val();//销售折扣
var Season = $("#IsSeason").val();//季节
//获取到表格中选中的颜色和对应尺码的数量

var checkStatus = layuiTable.checkStatus(“tabInsetPurchase”);//获取选中行的数据
var S = “”; var M = “”; var L = “”; var XL = “”; var XXL = “”; var SB = “”;
for (var i = 0; i < checkStatus.data.length; i++) {
S += checkStatus.data[i].S + “;”; SB += checkStatus.data[i].SB + “;”;
M += checkStatus.data[i].M + “;”; SJ += checkStatus.data[i].SJ + “;”;
//为了获取多条选中的数据,拼接字符串!
}
S = S.substring(0, S.length - 1); M = M.substring(0, M.length - 1);
XL = XL.substring(0, XL.length - 1); XXL = XXL.substring(0, XXL.length - 1);
//去除最后一个分号;
—用post请求控制器的方法,并且传参数到控制器中去
$.post("/DayWorkManagement/PurchaseStocks/InsertContent",
{
RegimenID: RegimenID, FundsNum: FundsNum, Catelist: Catelist, MarMenyer: MarMenyer, MarketMeny: MarketMeny, S: S, M: M, L: L, XL: XL,
XXL: XXL, SB: SB, SJ: SJ, SS: SS, SY: SY, SE: SE, A: A, B: B, ColorName: ColorName}, function (returnJson)
{
layer.close(layerIndex);
$("#AddCommodity").css({ display: “none” });
tabTitles.reload();
layer.alert(returnJson, { icon: 1, title: “提示” });
}
});
—因为需要传的代码比较多,但是操作步骤是一样的,所以就删减了这一部分。

控制器部分:
—控制器方法中的参数要与JQuery部分传过来的参数相对应,注意区分参数的类型。

public ActionResult InsertContent(string Univalent, int UnitID, int Famous, int ProvisionID, string S, string M, string L, string SB, string SJ, string SS, string SY, string SE, string A, string B, B_Commodits dbcommodits, R_CommoDeRelut dbCommDeRe, B_Stock dbStock)
{
string strMsg = “failed”;
int countSuccessDel = 0;//记录保存成功的条数
int countFailedDel = 0;//记录保存失败的条数
string[] s = S.Split(’;’);
string[] m = M.Split(’;’);
string[] l = L.Split(’;’);
string[] sb = SB.Split(’;’);
string[] sj = SJ.Split(’;’);
string[] colorname = ColorName.Split(’;’);
//用一个字符串数组来保存分割字符串的字符串!
for (int i = 0; i < colorname.Length; i++)
{
—循环上面分割的颜色的字符串数组!
if (string.IsNullOrEmpty(s[i])) { s[i] = “0”; }
if (Convert.ToInt32(s[i]) > 0)
{
//判断上面分割的字符串是否为空,如果为空不就行下面的操作!
dbcommodits.MarketMeny = Convert.ToDecimal(MarketMeny.Trim());
dbcommodits.Univalent = Convert.ToDecimal(Univalent.Trim());
dbcommodits.UnivalentHJ = dbcommodits.CommNumber * dbcommodits.Univalent;
myModels.B_Commodits.Add(dbcommodits);
myModels.SaveChanges() > 0;

//保存新增的数据到数据库的表中去!
dbCommDeRe.FamousID = Famous;
dbCommDeRe.Catelist = Catelist.Trim();
dbCommDeRe.CommCoding = FundsNum + ‘S’ + Color.ColorNumber.Trim() + strRandom;
myModels.R_CommoDeRelut.Add(dbCommDeRe);
myModels.SaveChanges() > 0;

//保存新增的数据到数据库的表中去!
dbStock.CommID = CommId;
dbStock.AcquiredMar = 0;
dbStock.StockAmount = 0;
dbStock.Tighten = 10;
dbStock.Imprison = 0;
myModels.B_Stock.Add(dbStock);
myModels.SaveChanges();
//保存新增的数据到数据库的表中去!
}
这样一个尺码的就判断完成了!其他尺码的操作也是类似!
if (string.IsNullOrEmpty(sj[i])) { sj[i] = “0”; }
if (Convert.ToInt32(sj[i]) > 0) {……}

if (string.IsNullOrEmpty(ss[i])) { ss[i] = “0”; }
if (Convert.ToInt32(ss[i]) > 0){……}

if (string.IsNullOrEmpty(b[i])) { b[i] = “0”; }
if (Convert.ToInt32(b[i]) > 0){……}
………………………………………………………….
每个尺码都循环执行一遍,当然也不用担心会影响执行的速度,因为在循环新增数据的时候都会判断是否为空,如果为空就不会进入到里面的操作,而且每次只会进入其中的一个判断,所以看起来代码虽然多,但是对项目的运行速度的影响并没有太大的影响!
}
strMsg = strMsg = “总共需要保存” + colorname.Length + “条商品信息!其中成功保存” + countSuccessDel + “条,失败” + countFailedDel + “条。”;
return Json(strMsg, JsonRequestBehavior.AllowGet);
—再把里面的数据封装返回到页面就可以了
}