获取列表中的最高编号或下一个可用编号

时间:2019-03-20 13:26:06

标签: javascript loops kendo-grid

在分配下一个发票行值时遇到问题。

我写了一段JavaScript来获取下一个值,但是不知何故它缺少下一个可用值,而仍然选择了最高值。

我需要的是最高或下一个可用数字,LineNo是我需要的最高或下一个可用数字。

代码

onGridBeforeEditLines: function (e) {//grid 2
    var event123 = e;
    var lineNo = 0;
    var grid = $("#gridLines").data("kendoGrid");
    $(grid.dataSource.data()).each(function (i, v) {
        if (v != null) {
            if (v.LineNo >= lineNo)
                lineNo = v.LineNo; //Getting the highest value    
        }
    });
    lineNo++;
    grid = $("#gridContracts").data("kendoGrid");
    if (e.model.PaymentPeriodID == 0) {           
        var selectedItem = grid.dataItem(grid.select());
        e.model.PaymentPeriodID = selectedItem.ID;
        e.model.LineNo = lineNo; //setting the value to the grid
    }        
},

图片

获得最高编号并将其加1似乎很好用。最高为3,因此4是下一个可用的行号。 Correct

当找到下一个可用号码时,它似乎不起作用。我删除了第2行,因此2应该是下一个可用的选项,但它仍然是最高的并添加1。 Incorrect

预先感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

if (v.LineNo > lineNo+1) { // then we skipped a space
  // next open value is lineNo+1
  lineNo = lineNo+1;
  return false; // break loop
} else if (v.LineNo == lineNo+1) {
  lineNo = v.LineNo; //Getting the next sequential value , keep looping
} else {
  // lineNo should stay the same
}