If you want to add data via BindingSource AddNew here is a comceptual example which means you would need to have private variables when getting dropped data to set then use in the AddingNew event.
Code:
Public Class Form1
    WithEvents bsData As New BindingSource
    Private CalcColumn As String = "partqty"

    Private Sub Form1_Load(
        ByVal sender As System.Object,
        ByVal e As System.EventArgs) Handles Me.Load

        Using MockedData As New DataTable()
            MockedData.Columns.AddRange(New DataColumn() _
                {
                    New DataColumn With
                    {
                        .ColumnName = "Identifier",
                        .DataType = GetType(Int32),
                        .AutoIncrement = True
                    },
                    New DataColumn("PartName", GetType(String)),
                    New DataColumn(CalcColumn, GetType(Int32))
                }
            )
            MockedData.Rows.Add(New Object() {Nothing, "Part A", 100})
            MockedData.Rows.Add(New Object() {Nothing, "Part 99", 34})
            MockedData.Rows.Add(New Object() {Nothing, "Part B", 4})
            bsData.DataSource = MockedData

        End Using

        CType(bsData.DataSource, DataTable).AcceptChanges()
        DataGridView1.DataSource = bsData

    End Sub
    Private Sub bsData_AddingNew(
        ByVal sender As Object, ByVal e As System.ComponentModel.AddingNewEventArgs) _
    Handles bsData.AddingNew

        Dim dv As DataView = TryCast(bsData.List, DataView)
        Dim rv As DataRowView = dv.AddNew()

        rv("PartName") = "(new)"
        rv(CalcColumn) = 0
        e.NewObject = rv

        bsData.MoveLast()

    End Sub
    Private Sub Button1_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        bsData.AddNew()
    End Sub
End Class