아래의 절차를 수행하면 my DataGrid의 확인란을 선택하여 한 번에 여러 레코드를 삭제할 수있었습니다. 이 절차는 ASP.net에서 작성되었지만 이제는 VB.net에서 winform을 사용하고 있습니다.SQL에서 바인딩 된 여러 레코드 삭제 Datagrid
확인란이있는 열 이름이 "삭제"인 DataGrid가 있습니다. 사용자는 삭제하고자하는 레코드를 으로 확인하고 해당 레코드를 삭제합니다. 내 쿼리의 매개 변수로 "티켓 번호"열 값을 사용합니다.
내가 가진 문제는 ASP.Net 용으로 작성 되었기 때문에이 라인에 대한의 WinForm VB.net 동등한 방법, 내가 찾을 수 있다는 것입니다 :의 FindControl는 System.Windows.Forms의 멤버
Dim chkDelete As CheckBox = DirectCast(grdRoster.Rows(i).Cells(0).FindControl("Delete_Row"), CheckBox)
하지
.DataGridViewCell. 게다가 체크 박스가 이 ColumnType : DataGridViewCheckBoxColumn으로 설정된 DataGrid 열에 있고 실제로 개별 컨트롤이 아니기 때문에 전체 라인이 잘못되었다고 확신합니다.winform에서 어떻게 동일한 결과를 얻을 수 있습니까? 여기 내 전체 코드가있다. 런타임에 DataGridViewCheckBoxColumn을 만들어야합니다 데이터 바인딩의 gridview에서 여러 레코드를 삭제
Private Sub btnDelete_Click(sender As Object, e As EventArgs) Handles btnDelete.Click
'Create String Collection to store
'IDs of records to be deleted
Dim ticketNumberCollection As New StringCollection()
Dim strTicketNumber As String = String.Empty
'Loop through GridView rows to find checked rows
For i As Integer = 0 To grdRoster.Rows.Count - 1
Dim chkDelete As CheckBox = DirectCast(grdRoster.Rows(i).Cells(0).FindControl("Delete_Row"), CheckBox)
If chkDelete IsNot Nothing Then
If chkDelete.Checked Then
strTicketNumber = grdRoster.Rows(i).Cells(1).ToString
ticketNumberCollection.Add(strTicketNumber)
End If
End If
Next
'Call the method to Delete records
DeleteMultipleRecords(ticketNumberCollection)
' rebind the GridView
grdRoster.DataBind()
End Sub
' Sub to delete multiple records
' @param "idCollection" calls the string collection above
' and deletes the selected record separated by ","
Private Sub DeleteMultipleRecords(ByVal ticketNumberCollection As StringCollection)
Dim IDs As String = ""
'Create string builder to store
'delete commands separated by ,
For Each id As String In ticketNumberCollection
IDs += id.ToString() & ","
Next
Try
Dim strTicketID As String = IDs.Substring(0, IDs.LastIndexOf(","))
DataSheetTableAdapter.DeleteRecord(strTicketID)
Catch ex As Exception
Dim errorMsg As String = "Error in Deletion"
errorMsg += ex.Message
Throw New Exception(errorMsg)
Finally
Me.Close()
End Try
End Sub
위의 코드는 이미 삭제할 레코드를 식별하고 처리합니다. 정확히 무엇이 오류나 문제입니까? 왜 ASP.NET 코드를 번역하고 싶습니까? 어디로 갈 건데? – NoChance
@EmmadKareem은 winform으로 들어갑니다. FindControl은 시스템의 멤버가 아닙니다. Windows.Forms.Datagrid –
물론 내 질문은 번역 문제를 제쳐두고 남겨두고 싶은 프로그램에 대한 것입니다. 왜이 라인이 필요한가요? 어떤 가치가 있습니까? – NoChance