Hi JagadishMohan,
As per your query i have create small sample. You need to change the code as per your requirement. Here i have created temporary table to get the record. So you need to change that with database code.
HTML
<div>
<table>
<tr>
<th>
Item Code
</th>
<th>
Cost
</th>
</tr>
<tr>
<td>
<asp:Label ID="lblItemCode" Text="AFDE004254" runat="server" />
</td>
<td>
<asp:Label ID="lblCost" Text="161.68" runat="server" />
</td>
</tr>
</table>
<br />
<table>
<tr>
<td>
Charging
</td>
<td>
<asp:TextBox ID="txtPeriod" runat="server" Text="3" />
</td>
</tr>
<tr>
<td>
Charging Starts On
</td>
<td>
<asp:TextBox ID="txtDate" runat="server" Text="19/07/2017" />
</td>
</tr>
</table>
<br />
<asp:LinkButton Text="Charge To (Requester)" runat="server" OnClick="ChargeTo" />
<br />
<br />
<asp:GridView ID="gvDetails" runat="server" AutoGenerateColumns="false" OnRowDataBound="gvDetails_RowDataBound">
<Columns>
<asp:BoundField DataField="RefrenceNo" HeaderText="ReferenceNo" />
<asp:BoundField DataField="StartDate" HeaderText="Start Date" />
<asp:BoundField DataField="CompeletionDate" HeaderText="Compeletion Date" />
<asp:BoundField DataField="ChargingDate" HeaderText="Charging Date" DataFormatString="{0:dd/MM/yyyy}" />
<asp:BoundField DataField="Amount" HeaderText="Amount" DataFormatString="{0:N2}" />
</Columns>
</asp:GridView>
<br />
<asp:Label ID="lblTotal" Text="0" runat="server" />
</div>
C#
protected void ChargeTo(object sender, EventArgs e)
{
// Get this record from database start
DataTable dt = new DataTable();
dt.Columns.Add("RefrenceNo", typeof(string));
dt.Columns.Add("StartDate", typeof(string));
dt.Columns.Add("CompeletionDate", typeof(string));
dt.Columns.Add("ChargingDate", typeof(DateTime));
dt.Columns.Add("Amount", typeof(decimal));
dt.Rows.Add("AFDE004254", "7/19/2017", "7/19/2017");
dt.Rows.Add("AFDE004255", "7/19/2017", "7/19/2017");
dt.Rows.Add("AFDE004256", "7/19/2017", "7/19/2017");
DataTable dt1 = dt.Clone();
DataRow[] dr = dt.Select("RefrenceNo='" + lblItemCode.Text.Trim() + "'");
foreach (DataRow row in dr)
{
dt1.Rows.Add(row.ItemArray[0], row.ItemArray[1], row.ItemArray[2], row.ItemArray[3], row.ItemArray[4]);
}
// Get this record from database end
int period = Convert.ToInt32(txtPeriod.Text);
decimal amount = Convert.ToDecimal(lblCost.Text) / period;
DateTime date = DateTime.ParseExact(txtDate.Text.Trim(), "dd/MM/yyyy", System.Globalization.CultureInfo.InvariantCulture);
DataTable dt2 = dt1.Clone();
for (int i = 0; i < period; i++)
{
DataRow row = dt1.Rows[0];
dt2.Rows.Add(row.ItemArray[0], row.ItemArray[1], row.ItemArray[2], date, amount);
date = date.AddMonths(1); // Set as per month interval
}
gvDetails.DataSource = dt2;
gvDetails.DataBind();
lblTotal.Text = "Total Cost : <u>" + lblCost.Text + "</u>";
}
VB
Protected Sub ChargeTo(sender As Object, e As EventArgs)
' Get this record from database start
Dim dt As New DataTable()
dt.Columns.Add("RefrenceNo", GetType(String))
dt.Columns.Add("StartDate", GetType(String))
dt.Columns.Add("CompeletionDate", GetType(String))
dt.Columns.Add("ChargingDate", GetType(DateTime))
dt.Columns.Add("Amount", GetType(Decimal))
dt.Rows.Add("AFDE004254", "7/19/2017", "7/19/2017")
dt.Rows.Add("AFDE004255", "7/19/2017", "7/19/2017")
dt.Rows.Add("AFDE004256", "7/19/2017", "7/19/2017")
Dim dt1 As DataTable = dt.Clone()
Dim dr As DataRow() = dt.[Select]("RefrenceNo='" + lblItemCode.Text.Trim() + "'")
For Each row As DataRow In dr
dt1.Rows.Add(row.ItemArray(0), row.ItemArray(1), row.ItemArray(2), row.ItemArray(3), row.ItemArray(4))
Next
' Get this record from database end
Dim period As Integer = Convert.ToInt32(txtPeriod.Text)
Dim amount As Decimal = Convert.ToDecimal(lblCost.Text) / period
Dim [date] As DateTime = DateTime.ParseExact(txtDate.Text.Trim(), "dd/MM/yyyy", System.Globalization.CultureInfo.InvariantCulture)
Dim dt2 As DataTable = dt1.Clone()
For i As Integer = 0 To period - 1
Dim row As DataRow = dt1.Rows(0)
dt2.Rows.Add(row.ItemArray(0), row.ItemArray(1), row.ItemArray(2), [date], amount)
' Set as per month interval
[date] = [date].AddMonths(1)
Next
gvDetails.DataSource = dt2
gvDetails.DataBind()
lblTotal.Text = "Total Cost : <u>" + lblCost.Text + "</u>"
End Sub
Screenshot