-
Nov 24th, 2013, 02:26 AM
#1
Thread Starter
Junior Member
-
Nov 24th, 2013, 08:11 AM
#2
Thread Starter
Junior Member
Re: Sum Data To the Left in Datagridview [Sum Rows In Datagridview]
[Resolved]
Here is the code if somebody need this:
Code:
Sub Hitung()
For i As Integer = 0 To dgv1.Rows.Count - 1
Dim A As Double = dgv1.Rows(i).Cells(2).Value
Dim B As Double = dgv1.Rows(i).Cells(3).Value
Dim C As Double = dgv1.Rows(i).Cells(4).Value
dgv2.Rows(i).Cells(2).Value = (A+B+C)
Next
-
Nov 24th, 2013, 08:46 PM
#3
Re: Sum Data To the Left in Datagridview [Sum Rows In Datagridview]
Generally speaking a DataGridView is commonly populated via a DataTable or a strongly typed list. In any case best not to work on the DataGridView but instead the underlying data i.e.
Code:
Public Class Form1
WithEvents bsData As New BindingSource
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Dim dt As New DataTable With {.TableName = "MyTable"}
dt.Columns.Add(New DataColumn With
{
.ColumnName = "Identifier",
.DataType = GetType(Int32),
.AutoIncrement = True,
.AutoIncrementSeed = 1,
.ColumnMapping = MappingType.Hidden
}
)
dt.Columns.Add(New DataColumn With
{
.ColumnName = "Col1",
.DataType = GetType(Integer),
.DefaultValue = 0
}
)
dt.Columns.Add(New DataColumn With
{
.ColumnName = "Col2",
.DataType = GetType(Integer),
.DefaultValue = 0
}
)
dt.Columns.Add(New DataColumn With
{
.ColumnName = "Col3",
.DataType = GetType(Integer),
.DefaultValue = 0
}
)
dt.Columns.Add(New DataColumn With
{
.ColumnName = "LineTotal",
.DataType = GetType(Integer),
.Expression = "Col1 + Col2 + Col3"
}
)
dt.Rows.Add(New Object() {Nothing, Nothing, 10, 10})
dt.Rows.Add(New Object() {Nothing, 10, 98, Nothing})
dt.Rows.Add(New Object() {Nothing, 100, 0, 20})
bsData.DataSource = dt
DataGridView1.DataSource = bsData
DataGridView1.Columns("LineTotal").DefaultCellStyle.Alignment =
DataGridViewContentAlignment.MiddleRight
AddHandler dt.RowChanged, AddressOf _RowChanged
AddHandler dt.ColumnChanged, AddressOf _ColumnChanged
AddHandler dt.RowDeleted, AddressOf _RowDeleted
UpDateTotal()
End Sub
Private Sub _ColumnChanged(sender As Object, e As DataColumnChangeEventArgs)
If Not e.Row.RowState = DataRowState.Deleted Then
If e.Column.ColumnName = "Col1" Or e.Column.ColumnName = "Col2" Or e.Column.ColumnName = "Col3" Then
If Not e.Row.RowState = DataRowState.Detached Then
If IsDBNull(e.Row.Item(e.Column.ColumnName)) Then
e.Row.Item(e.Column.ColumnName) = 0
End If
e.Row.AcceptChanges()
End If
UpDateTotal()
End If
End If
End Sub
Private Sub _RowChanged(sender As Object, e As DataRowChangeEventArgs)
If e.Action = DataRowAction.Add Or e.Action = DataRowAction.Change Or e.Action = DataRowAction.Commit Or e.Action = DataRowAction.Change Then
UpDateTotal()
End If
End Sub
Private Sub _RowDeleted(sender As Object, e As DataRowChangeEventArgs)
UpDateTotal()
End Sub
Private Sub UpDateTotal()
Dim dt As DataTable = CType(bsData.DataSource, DataTable)
If bsData.Position <> -1 Then
If Not CType(bsData.Current, DataRowView).Row.RowState = DataRowState.Detached Then
dt.Rows(bsData.Position).EndEdit()
End If
End If
Dim dv As New DataView() With {.Table = dt, .RowStateFilter = DataViewRowState.CurrentRows, .AllowDelete = False}
lblTotalSale.Text = (From T In dv.ToTable.AsEnumerable Select T.Field(Of Integer)("LineTotal")).Sum.ToString
End Sub
End Class
Tags for this Thread
Posting Permissions
- You may not post new threads
- You may not post replies
- You may not post attachments
- You may not edit your posts
-
Forum Rules
|
Click Here to Expand Forum to Full Width
|