Как это часто бывает, код ведет себя так, как вы сказали, а не как вы этого хотите: -).
Каждый раз, когда вы проходите цикл, вы устанавливаете tmpDate
из того же источника, а затем через две строки вы помещаете значение в RowValues
.:
tmpDate = GridAmortSched.Rows(GridAmortSched.RowCount - 1).Cells(1).Value.ToString()
Вы не настраиваете источник на i
и не увеличиваете его.Когда вы AddDays
, вы также не регулируете исходное значение (которое не будет работать из-за того, как и когда вы его назначаете).
Два простых исправления (два варианта)
Один. Первый - индексировать дни, которые нужно добавить, к значению цикла - простая модификация приведенного ниже кода достигнет этого.Это быстрое решение, и в будущем его будет сложнее поддерживать - более конкретно, его будет сложнее определить, если вы измените что-либо, например, начальную точку цикла.
RowValues(1) = tmpDate.AddDays(30*i).ToShortDateString
Two. Другой вариант - обратиться к логике кода.Установите базовое значение и затем увеличьте его в цикле.
Dim tmpDate As Date
tmpDate = GridAmortSched.Rows(GridAmortSched.RowCount - 1).Cells(1).Value.ToString() '*** Moved outside of loop
For i As Integer = 1 To termCounter
If GridAmortSched.RowCount <= 0 Then
RowValues(0) = i
RowValues(1) = dueDate.ToShortDateString
dRow = dtable.Rows.Add(RowValues)
Else
RowValues(0) = i
tmpDate = tmpDate.AddDays(30) '*** Increment date every time it passes here
RowValues(1) = tmpDate.ToShortDateString '*** Assign the new value
dRow = dtable.Rows.Add(RowValues)
End If
Next
dtable.AcceptChanges()
GridAmortSched.DataSource = dtable