新增的数据编号自增回填
开发工具与关键技术:Visual Studio 与Session
作者:黄灿
撰写时间:2019.5.14
新增数据,许多数据都有自定义的编号,并非我们数据中的主键ID。在数据库中,每新增一条数据,数据的主键ID都会自+1。我想实现一下自定义的编号自+1并且自动填上新增模态框的编号input标签(即编号的输入框)。
新增的数据编号自增回填的第一步:在查询的公共方法中查询出最后一条数据结果的编号。
刚新增一条数据,又删除这条数据,然后再次新增数据,再次新增的数据获取到最后一条数据的编号并自+1,获取到的这个编号是不正确的,因为获取到最后一条数据的编号并自+1,得到的编号会和刚删除的那条数据的编号会重复。我想自增的数据编号是不会出现重复的,也就是使用过的编号即使删除了就不会在自+1会得到删除的那条数据的编号,想要获取到即使是删除了的数据也可以获取到删除了这条数据的编号并自+1。不是获取到数据最后一条数据的编号自+1,而是获取到所有数据最大的那个编号,不管数据是存在数据库还是数据被删除了也可以获取到数据的编号。所以我从Session中获取数据的编号,这样获取到的数据编号就不会再是数据库中最后一条数据的编号。
获取到编号后,写上一个公共方法,方便在javascript中的function访问控制器这边的方法以便得到查询出来的编号。在公共方法中,申明一个空的字符串,判断一下查询Session中的编号是否为空,如果为空的话就不会执行下去,如果获取到Session中的编号不为空,那么就把Session中获取到的编号赋值给刚刚申明的字符串当中。然后把这个字符串的数据以Json的数据形式返回
Javascript中的function中,重置表单、绑定各个下拉框等就不多做详细介绍了,编号自+1回填使用jquery中的post方法访问控制器的方法,并且给一个回调函数,在回调函数中命名一个data接收控制器的方法中返回传参过来的数据,也就是接收查询到的编号,在控制器那边的方法,只是仅仅获取到最大的一个编号,并没有方法使编号自+1,所以在javascript中回调函数回调函数中写上方法把获取编号自+1,虽然说控制器获取到的编号已经赋值到字符串当中,但是控制器返回的数据是以Json的数据形式返回的,所以自+1,还是要把json数据形式变成字符串形式才能自+1,不然直接+1的话只是在获取到的编号后面增加一个1,并不是以数学的形式+1。要的到的编号自+1,是编号以数学形式上的+1;不是增加一位数字在编号后面,如果在编号后面增加1一个字的话,那么自增的编号将会是一个庞大的数,并且我在编号里使用有正则表达式规定编号只允许是5位数,大于5位数的话是新增不成功的。
在这里我把获取到的编号,用愚蠢的方法,把json数据形式转换为Number形式的数据自+1。这样自+1的到数字确实是数学上的+1,但是编号当中前面的0是消失了的,所以用if else判断自+1的编号大于9拼接三个零,大于99拼接两个零,大于999拼接一个零,大于9999不拼接,在否则就是小于10的了,小于10的拼接四个零,拼接的形式用字符串拼接上去,并把拼接好的编号回填到对应的ipnut标签(即填写编号的输入框)
在html中我把编号的input标签写上自读的属性,防止用户在新增的时候手动修改自增的编号
如有错误请指正或者有其他方法谢谢指导,小农民目前只是一个菜鸟,还在求学阶段,获取Session中的数据编号思路也还是老师给的。