だから、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
表示インデックスが正しく復元されない理由は何ですか?
おかげ