进货单号自增
开发工具与关键技术:Visual Studio 2015
作者:徐晶旗
撰写时间:2019年8月7日
在做项目的时候有一个模块是采购进货,然后每进一次货,系统就会自动在页面上生成一条单据编号,并且单号会根据进货的次数进行自增。那要怎么生成这个单据编号呢?我们就来一起做一下吧?
首先在页面上给这个要生成单据编号的位置放上一个id,因为单号是自动生成的,所以要使这个输入框不能进行编辑,就在input标签中添加了一个禁用属性“readonly”,防止用户对值进行修改。注:在这里为什么不用“disabled”呢?这是因为disabled与readonly虽然都能够做到在输入框中不能更改内容,但是使用disabled在后台是获取不到值的,所以在页面上不能改变值,因为我这里的单号会根据进货的次数发生改变,所以只适合用“readonly”,不过一般“disabled”属性比“readonly”属性更广,而readonly属性有一定的局限性,它只对< input >和< textarea> 标签有效,不过至于用哪个属性还是要看个人需求的?
<input class="form-control" id="OrderCode"name="StockNumber" readonly>
然后到控制器上写查询的方法,方法名为“CreateNumber”,首先申明一个值为空字符串的变量“Number”,再申明 StockNumber来接收查询到的数据,通过进货表查询进货单号,再判断查询到的数据条数是否大于0,如果大于0就申明一个变量“num”为int类型,这个变量的值等于查询到的数据条数,把数据条数转换成string类型,赋值给变量“Number”,然后写一个循环,循环次数为要生成单号的长度,然后在循环体中判断Number变量所表示的值的长度是否小于要生成单号的长度,如果小于就给它的前面拼接0。如果查询到的数据条数等于0,就直接把Number字符串赋值为初始单号“000000001”,然后就直接返回Number。如果单号需要一个前缀,就直接在返回的时候多拼一个需要的前缀,例如“JHD”。
具体代码如下:
/// <summary>
/// 进货单号
/// </summary>
/// <returns></returns>
public ActionResult CreateNumber()
{
var Number = "";
var StockNumber = (from tbStock in myModels.B_Stock
orderby tbStock.StockID descending
select tbStock);
if (StockNumber.Count() > 0)
{
int num = StockNumber.Count();
Number = num.ToString();
for (int i = 0; i < 9; i++)
{
if (Number.Length < 9)
{
Number = "0" + Number;
}
}
}
else
{
Number = "000000001";
}
return Json("JHD" + Number, JsonRequestBehavior.AllowGet);
}
然后在页面上的加载事件中请求这个方法即可,找到要获取的id给它赋值,然后单据编号就这样生成了。
$.post("CreateNumber", function (data) {
$("#OrderCode").val(data);
});