コードの何が問題なのか知りたいのですが。削除したい場合は、チェックボックスをオンにする必要があります。1つのレコードを削除できますが、複数のレコードを削除したい場合、エラーは発生しませんが、レコードは削除されませんでした。これが私のコードです
Protected Sub chkSelect_CheckedChanged(ByVal sender As Object, ByVal e As EventArgs)
Dim chkTest As CheckBox = DirectCast(sender, CheckBox)
Dim grdRow As GridViewRow = DirectCast(chkTest.NamingContainer, GridViewRow)
Dim bin As TextBox = DirectCast(grdRow.FindControl("txtBin"), TextBox)
Dim wheatGrist As TextBox = DirectCast(grdRow.FindControl("txtWheatGrist"), TextBox)
Dim HB43S As TextBox = DirectCast(grdRow.FindControl("txtHB43S"), TextBox)
Dim M_NIR As TextBox = DirectCast(grdRow.FindControl("txtNIR"), TextBox)
Dim HB43 As TextBox = DirectCast(grdRow.FindControl("txtHB43"), TextBox)
Dim WG_NIR As TextBox = DirectCast(grdRow.FindControl("txtWGNIR"), TextBox)
Dim glutematic As TextBox = DirectCast(grdRow.FindControl("txtGlutematic"), TextBox)
Dim handwash As TextBox = DirectCast(grdRow.FindControl("txtHandwash"), TextBox)
Dim distilledWater As TextBox = DirectCast(grdRow.FindControl("txtDistilled"), TextBox)
If chkTest.Checked Then
bin.[ReadOnly] = False
wheatGrist.[ReadOnly] = False
HB43S.[ReadOnly] = False
M_NIR.[ReadOnly] = False
HB43.[ReadOnly] = False
WG_NIR.[ReadOnly] = False
glutematic.[ReadOnly] = False
handwash.[ReadOnly] = False
distilledWater.[ReadOnly] = False
bin.ForeColor = System.Drawing.Color.Blue
wheatGrist.ForeColor = System.Drawing.Color.Blue
HB43S.ForeColor = System.Drawing.Color.Blue
M_NIR.ForeColor = System.Drawing.Color.Blue
HB43.ForeColor = System.Drawing.Color.Blue
WG_NIR.ForeColor = System.Drawing.Color.Blue
glutematic.ForeColor = System.Drawing.Color.Blue
handwash.ForeColor = System.Drawing.Color.Blue
distilledWater.ForeColor = System.Drawing.Color.Blue
Else
bin.[ReadOnly] = True
wheatGrist.[ReadOnly] = True
HB43S.[ReadOnly] = True
M_NIR.[ReadOnly] = True
HB43.[ReadOnly] = True
WG_NIR.[ReadOnly] = True
glutematic.[ReadOnly] = True
handwash.[ReadOnly] = True
distilledWater.[ReadOnly] = True
bin.ForeColor = System.Drawing.Color.Black
wheatGrist.ForeColor = System.Drawing.Color.Black
HB43S.ForeColor = System.Drawing.Color.Black
M_NIR.ForeColor = System.Drawing.Color.Black
HB43.ForeColor = System.Drawing.Color.Black
WG_NIR.ForeColor = System.Drawing.Color.Black
glutematic.ForeColor = System.Drawing.Color.Black
handwash.ForeColor = System.Drawing.Color.Black
distilledWater.ForeColor = System.Drawing.Color.Black
End If
End Sub
Private Sub UncheckAll()
For Each row As GridViewRow In GridView1.Rows
Dim chkUncheck As CheckBox = DirectCast(row.FindControl("chkSelect"), CheckBox)
Dim bin As TextBox = DirectCast(row.FindControl("txtBin"), TextBox)
Dim wheatGrist As TextBox = DirectCast(row.FindControl("txtWheatGrist"), TextBox)
Dim HB43S As TextBox = DirectCast(row.FindControl("txtHB43S"), TextBox)
Dim M_NIR As TextBox = DirectCast(row.FindControl("txtNIR"), TextBox)
Dim HB43 As TextBox = DirectCast(row.FindControl("txtHB43"), TextBox)
Dim WG_NIR As TextBox = DirectCast(row.FindControl("txtWGNIR"), TextBox)
Dim glutematic As TextBox = DirectCast(row.FindControl("txtGlutematic"), TextBox)
Dim handwash As TextBox = DirectCast(row.FindControl("txtHandwash"), TextBox)
Dim distilledWater As TextBox = DirectCast(row.FindControl("txtDistilled"), TextBox)
chkUncheck.Checked = False
bin.ForeColor = System.Drawing.Color.Black
wheatGrist.ForeColor = System.Drawing.Color.Black
HB43S.ForeColor = System.Drawing.Color.Black
M_NIR.ForeColor = System.Drawing.Color.Black
HB43.ForeColor = System.Drawing.Color.Black
WG_NIR.ForeColor = System.Drawing.Color.Black
glutematic.ForeColor = System.Drawing.Color.Black
handwash.ForeColor = System.Drawing.Color.Black
distilledWater.ForeColor = System.Drawing.Color.Black
Next
End Sub
Protected Sub btnDelete_Click(ByVal sender As Object, ByVal e As EventArgs)
'Create String Collection to store IDs of
'records to be deleted
Dim idCollection As New StringCollection()
Dim strID As Integer
'Loop through GridView rows to find checked rows
For i As Integer = 0 To GridView1.Rows.Count - 1
Dim chkDelete As CheckBox = DirectCast(GridView1.Rows(i).Cells(0).FindControl("chkSelect"), CheckBox)
If chkDelete IsNot Nothing Then
If chkDelete.Checked Then
strID = GridView1.Rows(i).Cells(1).Text
idCollection.Add(strID)
End If
End If
Next
If idCollection.Count > 0 Then
'Call the method to Delete records
DeleteRecords(idCollection)
' rebind the GridView
GridView1.DataBind()
'Else
'lblMessage.Text = "Please select any row to delete"
End If
End Sub
Private Sub DeleteRecords(ByVal idCollection As StringCollection)
'Create sql Connection and Sql Command
Dim cnnOLEDB As New OleDbConnection(strConnectionString)
Dim cmd As New OleDbCommand
Dim IDs As Integer
For Each id As Integer In idCollection
IDs += id & ","
Next
Try
Dim test As Integer = IDs
Dim sql As String = "DELETE FROM [1BK] WHERE [sampleID] in (" & test & ")"
Dim ANS As Integer
ANS = MsgBox("Are you sure want to delete selected record ?" & vbCrLf & vbCrLf, MsgBoxStyle.YesNo)
If ANS = vbYes Then
cmd.CommandType = CommandType.Text
cmd.CommandText = sql
cmd.Connection = cnnOLEDB
cnnOLEDB.Open()
cmd.ExecuteNonQuery()
End If
ANS = 0
Catch ex As Exception
Dim errorMsg As String = "Error in Deletion"
errorMsg += ex.Message
Throw New Exception(errorMsg)
Finally
cnnOLEDB.Close()
End Try
End Sub