그래서 vb.net에서 datagridview의 결과를 필터링하는 데 사용할 클래스가 있습니다. 그리고이 클래스에서해야 할 일 중 하나는 열 순서, 너비 및 가시성을 유지하는 것입니다.DataGridview에서 표시 인덱스를 복원 할 수 없습니다.
내 검색 클래스가 인스턴스화되면 나중에 참조 할 수 있도록 해시 테이블에 열의 복사본을 만듭니다.
Private dgv As DataGridView
Private dataSet As DataSet
Private bindingSource As New BindingSource
Dim ht As New Hashtable()
Public Sub new(ByRef dgv As DataGridView, ByVal dataSet As dataset)
Me.dgv = dgv
Me.dataSet = dataSet
For Each col As DataGridViewColumn In dgv.Columns
ht.Add(col.headertext, col)
Next
End Sub
그럼, ...과 같이
Public Sub quickFilter(ByVal searchterm As string, ByVal tablename As String, optional ByVal colname As string = Nothing)
dgv.DataSource = dataSet
dgv.DataMember = tablename
bindingSource.DataSource = CType(dgv.DataSource, DataSet).Tables.Item(tablename)
bindingSource.Filter = determineColumnsFilter(searchterm, colname)
dgv.DataSource = bindingSource.DataSource
restoreCols()
End Sub
혼란스러운 부분 복원 COLS 기능이 제대로 폭 및 가시성을 복원 아니지만 디스플레이 인덱스를 필터링. 그것은 어떤 방식 으로든 주위에 기둥을 섞는 것처럼 보입니다.
Private Sub restoreCols()
For Each col As DataGridViewColumn In dgv.Columns
Dim colcopy As DataGridViewColumn = ht(col.headertext)
col.Width = colcopy.Width
col.Visible = colcopy.Visible
col.DisplayIndex = colcopy.DisplayIndex
Next
End Sub
디스플레이 색인이 제대로 복원되지 않는 이유는 무엇입니까?
감사