Dim i As Integer = 0
'================== เลือกสุนัขเเล้วส่งไปหน้า sale ====================
For i = 0 To DataGridView1.Rows.Count - 1
If DataGridView1.Rows(i).Selected Then
Dim j As Integer = Sale.DataGridView2.Rows.Add()
Sale.DataGridView2.Rows(j).Cells(0).Value = DataGridView1.Rows(i).Cells(0).Value
Sale.DataGridView2.Rows(j).Cells(1).Value = DataGridView1.Rows(i).Cells(1).Value
Sale.DataGridView2.Rows(j).Cells(2).Value = DataGridView1.Rows(i).Cells(2).Value
Sale.DataGridView2.Rows(j).Cells(3).Value = DataGridView1.Rows(i).Cells(3).Value
Sale.DataGridView2.Rows(j).Cells(4).Value = DataGridView1.Rows(i).Cells(4).Value
End If
Next
Dim selectRow As Integer
selectRow = Me.DataGridView1.CurrentRow.Index
For i = 0 To DataGridView1.Rows.Count - 1
DataGridView1.Rows().RemoveAt(selectRow)
Next
ยังทำไม่ได้เลยครับพี่ numenoy ผมไม่เข้าใจครับ ลองไปอ่านดูเรื่อง For Each เเล้วก็ยังงงอยู่ ไม่เคยใช้เลยด้วยครับ
เลยลองเขียน code เเบบนี้อะครับ เเต่ก็ยัง Error ครับ
รอบนี้ไม่สามารถเพิ่มข้อมูลลงไปได้เลยอะครับ
รบกวนพี่ช่วยดูทีครับผม
รูป Error ครับ
code Code (VB.NET)
Dim selectRow As Integer
selectRow = Me.DataGridView1.CurrentRow.Index
For Each selectRow In DataGridView1.Rows()
DataGridView1.Rows().RemoveAt(selectRow)
Next
ลองอันนี้หน่อยคุณเพื่อนว่าได้หรือเปล่า กวางลอง test กับโปรแกรมกวางแล้วมันลบค่าที่ต้องการได้น่ะ (event CellMouseDoubleClick) แต่อันนี้ลบได้ทีละแถวนะ ไม่รู้จะตรงกับที่ต้องการหรือเปล่า
Code (VB.NET)
Dim selectRow As Integer
selectRow = Me.DataGridview1.CurrentRow.Index
For i As Integer = 0 To DataGridview1.CurrentRow().Index
DataGridview1.Rows().RemoveAt(selectRow)
Next
Dim selectRow As Integer
selectRow = Me.DataGridview1.CurrentRow.Index
For i As Integer = 0 To DataGridview1.CurrentRow().Index
DataGridview1.Rows().RemoveAt(selectRow)
Next
Private Sub DataGridView2_DoubleClick1(ByVal sender As Object, ByVal e As System.EventArgs) Handles DataGridView2.DoubleClick
Dim selectRow As Integer
Dim i As Integer
Dim temp1 As Integer = 0
Dim temp2 As Integer = 0
Dim sum As Integer = 0
selectRow = Me.DataGridView2.CurrentRow.Index
If Me.DataGridView2.Rows.Count <> 0 Then
If MessageBox.Show("ต้องการลบข้อมูลแถวนี้หรือไม่?", "Warning !!", MessageBoxButtons.YesNo, MessageBoxIcon.Question) = Windows.Forms.DialogResult.Yes Then
For i = 0 To DataGridView2.Rows.Count - 1 'ให้วนตั้งเเต่เเถวเเรกจนถึงเเถวสุดท้าย
If DataGridView2.Rows(i).Selected Then 'เเถวไหนก็ตามที่มีการเลือกให้ทำเงื่อนไขด้านล่าง
temp1 = DataGridView2.Rows(i).Cells(4).Value
temp2 = lb_totalPrice.Text - temp1
sum = temp2
sum = FormatNumber(sum, 2)
Dim j As Integer = DataGridView2.Rows.Add()
Sale_DogList.DataGridView1.Rows(j).Cells(0).Value = DataGridView2.Rows(i).Cells(0).Value
Sale_DogList.DataGridView1.Rows(j).Cells(1).Value = DataGridView2.Rows(i).Cells(1).Value
Sale_DogList.DataGridView1.Rows(j).Cells(2).Value = DataGridView2.Rows(i).Cells(2).Value
Sale_DogList.DataGridView1.Rows(j).Cells(3).Value = DataGridView2.Rows(i).Cells(3).Value
Sale_DogList.DataGridView1.Rows(j).Cells(4).Value = DataGridView2.Rows(i).Cells(4).Value
End If
Next
Me.DataGridView2.Rows.RemoveAt(selectRow)
lb_totalPrice.Text = sum.ToString("###,##0.00")
End If
End If
End Sub
For Each dgvr As System.Windows.Forms.DataGridViewRow In Me.DataGridView2.SelectedRows
Dim dgr As System.Windows.Forms.DataGridViewRow = dgvr.Clone()
For i As Integer = 0 To dgvr.Cells.Count - 1
dgr.Cells(i).Value = dgvr.Cells(i).Value
Next
DataGridView1.Rows.Add(dgr)
Me.DataGridView2.Rows.Remove(dgvr)
Next
ตรง loop for น่ะ
อ่านของน้องแล้วดูยุ่งเยิงจัง เอานี้ไปลองใช้ดู ไวกว่านะ ^ ^"
Dim i As Integer = 0
For i = 0 To Sale.DataGridView2.Rows.Count - 1
Dim temp_DogID As String = ""
temp_DogID = Sale.DataGridView2.Rows(i).Cells(0).Value
If temp_DogID = Me.DataGridView1.Rows(i).Cells(0).Value Then
MessageBox.Show("ซ้ำกรุณาเลือกใหม่", "Error", MessageBoxButtons.OK, MessageBoxIcon.Warning)
Exit Sub
End If
Next
Dim i As Integer = 0
For i = 0 To Sale.DataGridView2.Rows.Count - 1
Dim temp_DogID As String = ""
temp_DogID = Sale.DataGridView2.Rows(i).Cells(0).Value
If temp_DogID = Me.DataGridView1.CurrentRow.Cells(0).Value Then ' ใช้ CurrentRow เพื่อเอาค่าที่เราเลือก ณ ตอนนั้นไปเทียบกับ Grid ที่เราจะใส่ข้อมูล
MessageBox.Show("ซ้ำกรุณาเลือกใหม่", "Error", MessageBoxButtons.OK, MessageBoxIcon.Warning)
Exit Sub
End If
Next
Private Sub btnSelectDog_Click(sender As Object, e As EventArgs) Handles btnSelectDog.Click
Dim f As New frmDataGridView2
f.strDogCode = If(DataGridView1.SelectedRows.Count > 0 AndAlso DataGridView1.Columns.Count > 0, DataGridView1.SelectedRows(0).Cells("IDCardNo").Value, String.Empty)
f.srcDataGridView = DataGridView1
f.ShowDialog()
End Sub
Lookup Form (frmDataGridView2) Code (VB.NET)
Public Class frmDataGridView2
Public strDogCode As String = String.Empty 'รหัสสุนัข
Public srcDataGridView As DataGridView = Nothing ' DataGridView1 control in frmDataGridView1
Public strDogCodeReturnValue As String = String.Empty
Private Sub frmDataGridView2_Load(sender As Object, e As EventArgs) Handles MyBase.Load
'เลือกระเบียนถ้าจำเป็น แต่ยังไม่ขออึ๊บ
RemoveHandler DataGridView2.SelectionChanged, AddressOf DataGridView2_SelectionChanged
DataGridView2.ClearSelection()
'Fill Data when you down.
DataGridView2.Rows.Add("1", "111")
DataGridView2.Rows.Add("2", "222")
DataGridView2.Rows.Add("3", "333")
DataGridView2.Rows.Add("4", "444")
If Not String.IsNullOrEmpty(strDogCode) Then
Dim tmpSelectedRow = (From r As DataGridViewRow In DataGridView2.Rows
Where r.Cells("IDCardNo").Value = strDogCode).FirstOrDefault()
If tmpSelectedRow IsNot Nothing AndAlso DataGridView2.Columns.Count > 0 Then
DataGridView2.CurrentCell = DataGridView2.Rows(tmpSelectedRow.Index).Cells(0)
End If
End If
AddHandler DataGridView2.SelectionChanged, AddressOf DataGridView2_SelectionChanged
End Sub
Private Sub DataGridView2_SelectionChanged(sender As Object, e As EventArgs) Handles DataGridView2.SelectionChanged
MessageBox.Show("ขออึ๊บได้ไหม?")
strDogCodeReturnValue = String.Empty
If srcDataGridView IsNot Nothing AndAlso DataGridView2.SelectedRows.Count > 0 Then
If Not DataGridView2.SelectedRows(0).Cells("IDCardNo").Value <> strDogCode Then
Dim lstDup = (From r As DataGridViewRow In srcDataGridView.Rows Where (Not r.IsNewRow AndAlso r.Cells("IDCardNo").Value = DataGridView2.SelectedRows(0).Cells("IDCardNo").Value)
Group r By key = r.Cells("IDCardNo").Value Into tmpGrp = Group
Where tmpGrp.Count() > 0
Select IDCardNO = key, cntIDCardNo = tmpGrp.Count()).ToList()
If lstDup IsNot Nothing AndAlso lstDup.Count > 0 Then
lstDup.ForEach(Sub(x)
MessageBox.Show(x.IDCardNO & " นับได้ " & x.cntIDCardNo)
End Sub)
Else
strDogCodeReturnValue = DataGridView2.SelectedRows(0).Cells("IDCardNo").Value
End If
End If
End If
End Sub
End Class