DataSet을 Datagrid 컨트롤에 바인딩
하고 DataAdapter 개체를 사용하여다음과 같이
데이터베이스를 수정하는
경우:
새로운 OleDbDataAdapter(stradp,conn)로 adp를 흐리게 합니다.
새로운 OleDbCommandBuilder(adp)로 ocb를 어둡게 합니다.
adp.DeleteCommand = ocb.GetDeleteCommand()
adp.Update(ds,"주문")
----------------------------
삭제 작업을 수행할 때 추가하면 다음과 같은 방법:
하위 mydatagrid_delete(객체로 보낸 사람, datagridcommandeventargs로 e)
새로운 DataTable()로 희미한 dt
dt = ds.Tables("주문")
Dr를 DataRow로 흐리게 표시
dr = dt.Rows(E.Item.ItemIndex)
dr.삭제
'dr.AcceptChanges'한번 완전 삭제 기능을 사용하려고 시도했는데 adp가 자동으로 데이터베이스에 다시 업데이트될 때 해당 sql 문이 자동으로 생성되지 않는 것을 발견했습니다
.' 현재 항목의 마지막 항목을 삭제할 때 발생한 페이지 인덱스 예외를 해결하기 위해 ' 페이지
'************************************************ * ***************
lastEditPage를 정수로 흐리게 = mydatagrid.currentPageIndex
(mydatagrid.pageCount - mydatagrid.currentPageIndex) = 1이고 mydatagrid.Items.Count = 1인 경우
mydatagrid.pageCount > 1인 경우
lastEditPage = LastEditPage - 1
또 다른
lastEditPage = 0
종료 조건
종료 조건
mydatagrid.currentPageIndex = lastEditPage
'************************************************ * **************
세션("orderList") = ds
mydatagrid.edititemindex = -1
mydatagrid.datasource = ds.tables("주문")
mydatagrid.databind()
end sub
첫 번째 것을 하나씩 삭제하는 중에 예외가 발생했습니다. 두 번째를 삭제하면 삭제할 수 없습니다. 즉, 원본 dr(2)가 자동으로 dr(1)이 되지 않는 것으로 나타났습니다. dr.delete dr.acceptChanges를 사용하면 자동으로 변경이 이루어질 수 있지만 위에서 설명한 것처럼 자동 업데이트를 사용하여 데이터베이스로 돌아갈 수는 없습니다. 삭제 시 실제 인덱스를 얻어야 하므로 동기 삭제를 유지하기 위해 현재 ds에 또 다른 테이블을 생성하는 방법을 사용했지만 실제 인덱스 값을 테이블의 id 열에 저장하는 방법은 다음과 같습니다
. dr 인덱스를 해결하려면:
희미한 orderTable as new DataTable() ' 인덱스를 저장하고 동기화된 삭제를 유지하기 위해 임시 테이블을 만듭니다.
NewRow를 DataRow로 흐리게 표시
DC를 DataColumn으로 흐리게 표시
orderTable.TableName = "orderId"
ds.Tables.add(orderTable)
dc = 새 DataColumn()
dc.ColumnName = "id"
orderTable.columns.add(dc)
희미한 dcKey() as DataColumn = {orderTable.Columns("id")}
orderTable.primaryKey = dcKey
나는 정수로 어둡게
i = 0에서 (ds.Tables("Users").Rows.Count - 1)까지
theNewRow = orderTable.NewRow()
theNewRow("id") = i.toString()
orderTable.Rows.add(theNewRow)
위의 삭제 함수에 추가된
다음
코드는 dr = dt.Rows(e.Item.ItemIndex):희미 drOrder를 DataRow로
바꿉니다.
drOrder = ds.Tables("orderId").Rows(E.Item.ItemIndex)
currentOrder를 정수로 흐리게 = CInt(drOrder("id")) + mydatagrid.currentPageIndex * mydatagrid.PageSize
dr = dt.Rows(currentOrder)
drOrder.삭제
업데이트 기능이 있는 경우 dr = dt.Rows(e.Item.ItemIndex):
dim drOrder를 DataRow로
바꿉니다.
drOrder = ds.Tables("orderId").Rows(E.Item.ItemIndex)
currentOrder를 정수로 흐리게 = CInt(drOrder("id")) + mydatagrid.currentPageIndex * mydatagrid.PageSize
dr = dt.Rows(currentOrder)