기본적으로 MySQL DB가 있습니다. 테이블의 한 열에있는 데이터를 ListBox에 바인딩하고 있습니다. 사용자가 항목을 추가 / 편집 / 제거하고 변경 사항을 저장 / 거부 할 수 있도록하고 싶습니다.
삭제를 위해 사용자가 ListBox에서 선택한 항목을 삭제할 수 있기를 바랍니다. 지금까지 시도한 내용은 다음과 같습니다.
(1) dt.Rows(lst.SelectedIndex).Delete()
그러나 이것은 DataAdapter.Update
메서드를 사용하여 업데이트 할 때까지 DataTable에서 행을 실제로 삭제하지 않으므로 ListBox의 다음 인덱스는 DataTable에서 삭제 된 행을 참조합니다.
(2) : dt.Rows.RemoveAt(lst.SelectedIndex)
이것은 잘 작동하지만 DataTable을 업데이트 할 때 (사용자가를 클릭 한 후 save
) 삭제 된 행이 삭제되지도 않습니다.
(3) 전화 시도 AcceptChanges
:
dt.Rows(lst.SelectedIndex).Delete()
dt.AcceptChanges()
그리고 위의 두 번째 결과와 동일한 결과를 얻습니다.
마지막으로 DataTable을 업데이트하는 방법은 다음과 같습니다.
Dim cmdBldr As New MySqlCommandBuilder(da)
da.Update(dt)
따라서 사용자가 업데이트하기 전에 DataTable에 원하는 수의 행을 추가 / 삭제할 수있는 방법이 있습니까?
바인드 DataTable
A를 BindingSource
(이 당신은 디자이너에 추가 할)와 결합받는 것을 ListBox
. 그런 다음을 호출하여 선택한 레코드를 삭제 RemoveCurrent
합니다 BindingSource
. 그러면 해당 행에 플래그가 지정 Deleted
되고 BindingSource
.
AcceptChanges
아무 것도 부르지 마십시오 . 이렇게하면 저장할 변경 사항이 없음을 데이터 어댑터에 알립니다. Update
데이터 어댑터를 호출 하여 변경 사항을 DataTable
다시 데이터베이스 에 저장하십시오 . AcceptChanges
성공적인 저장 후 내부적으로 호출됩니다 . 경우 AcceptChanges
라고 표시, 어떤 행 Deleted
으로부터 제거 된 DataTable
임의의 행을 표시하는 동안, Added
또는 Modified
표시된다 Unchanged
.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다