我使用的方法是先添加一个类,类里面装的方法,到时候需要的时候就可以直接使用
public static string GetAutoIncrement(string AutoIncrementNum,string Num,int Count,string data)
{
string strAutoNum = "";
string strTime = DateTime.Now.ToString("yyyyMMdd");
string strAuto = Num + strTime;
int zhiZeng = Convert.ToInt32(AutoIncrementNum);
if (Count == 0 || strTime != data)
{
strAutoNum = strAuto + "000";
return strAutoNum;
}
zhiZeng++;
if (zhiZeng<10)
{
string ZhiZeng = zhiZeng.ToString();
ZhiZeng = "00" + ZhiZeng;
strAutoNum = strAuto + ZhiZeng;
return strAutoNum;
}
else if (zhiZeng>=10 && zhiZeng<100)
{
string ZhiZeng = zhiZeng.ToString();
ZhiZeng = "0" + ZhiZeng;
strAutoNum = strAuto + ZhiZeng;
return strAutoNum;
}
else
{
string ZhiZeng = zhiZeng.ToString();
strAutoNum = strAuto + ZhiZeng;
return strAutoNum;
}
}
上面的就是类的方法代码,
然后在页面,因为我这里是新增商品进货单时需要的自动生成单据编号,所以我就需要在新增商品进货单的控制器视图里进行代码的编打,
//自定义方法
string txbBusiNo = "";
var dbCommReplyOrder = (from tbCommReplyOrder in myModels.PW_CommReplyOrder//表
orderby tbCommReplyOrder.CommReplyOrderID descending//表的ID
select tbCommReplyOrder.ReceiptNumber.Trim()//在表中需要生成的编号字段
).ToList();
//因为我需要的编号有14位数,前三位是固定的字母,接着的是日期8位数,后面就是从000开始自动自增的
string SaleLndentNum = dbCommReplyOrder[0].Substring(dbCommReplyOrder[0].Length - 3);
string SaleLndentdata = dbCommReplyOrder[0].Substring(dbCommReplyOrder[0].Length - 11, dbCommReplyOrder[0].Length - 6);
//Number是类的名称
txbBusiNo = EntityClass.Number.GetAutoIncrement(SaleLndentNum, "XDD", dbCommReplyOrder.Count(), SaleLndentdata);
//参数
ViewBag.SaleLndentNum = txbBusiNo;
最后直接把参数传过页面进行了。视图:
如果你在启动时控制器的
string SaleLndentNum = dbCommReplyOrder[0].Substring(dbCommReplyOrder[0].Length - 3);
这句代码报错,是说明你数据库中没有编号的长度是长达14位的,你自手动添加一条上去然后再刷新即可。
最后再说一种简单的自动生成,只需要在控制器的视图里加上两句代码就行:
//直接获取现在的时间传到页面上
var Time = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
//参数
ViewBag.Time = Time;
同样的把参数传过页面进行value="@ViewBag.Time"
视图: