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
