Assuming that
DataGridView.DataSource[
^] is
DataTable[
^], i'd suggest to calculate
tax
and
total amt
using
Linq To Dataset[
^]:
Dim dt As DataTable = DataGridView1.DataSource
Dim id = dgvDetails.Rows(e.RowIndex).Cells(1).Value
Dim totaltax = dt.AsEnumerable() _
.Where(Function(item) item.Field(Of Integer)("itemcode")=id) _
.Select(Function(item) item.Field(Of Integer)("qty") * _
item.Field(Of Decimal)("price") * _
item.Field(Of Decimal)("tax")).SingleOrDefault()
Dim totalamt = dt.AsEnumerable() _
.Where(Function(item) item.Field(Of Integer)("itemcode")=id) _
.Select(Function(item) item.Field(Of Decimal)("price") + totaltax).SingleOrDefault()
With DataGridView1
.Rows(e.RowIndex).Cells(6).Value = totalamt
.Rows(e.RowIndex).Cells(7).Value = totaltax
End With
For further information, please see:
LINQ to DataSet Examples[
^]
Querying DataSets (LINQ to DataSet)[
^]
Queries in LINQ to DataSet[
^]
Complete example:
Dim dt As DataTable = New DataTable()
dt.Columns.Add(New DataColumn("itemcode", GetType(Integer)))
dt.Columns.Add(New DataColumn("itemname", GetType(String)))
dt.Columns.Add(New DataColumn("qty", GetType(Integer)))
dt.Columns.Add(New DataColumn("price", GetType(Decimal)))
dt.Columns.Add(New DataColumn("tax", GetType(Decimal)))
dt.Columns.Add(New DataColumn("total amt", GetType(Decimal)))
dt.Columns.Add(New DataColumn("total tax", GetType(Decimal)))
dt.Rows.Add(New Object(){1, "led tv", 2, 12000, 0.12, DBNull.Value, DBNull.Value})
Dim id = 1
Dim totaltax = dt.AsEnumerable() _
.Where(Function(item) item.Field(Of Integer)("itemcode")=id) _
.Select(Function(item) item.Field(Of Integer)("qty") * _
item.Field(Of Decimal)("price") * _
item.Field(Of Decimal)("tax")).SingleOrDefault()
Dim totalamt = dt.AsEnumerable() _
.Where(Function(item) item.Field(Of Integer)("itemcode")=id) _
.Select(Function(item) item.Field(Of Decimal)("price") + totaltax).SingleOrDefault()
Console.WriteLine("tax: {0} total: {1}", totaltax, totalamt)
Returns:
tax: 2880.00 total: 14880.00