作成日: 2024/01/25 最終更新日: 2025/02/26
文書種別
不具合
状況
修正済み
詳細
以下の条件を満たしている場合、ResetVisibleメソッドを実行すると意図しない行が非表示になります。
- データ連結した行と、非連結の行が混在している
- フィルターを適用している
- 一部の行を非表示にしている
問題の発生する実装例
Dim dv As As DataView
Dim dt As New DataTable()
With dt
.Columns.AddRange({New DataColumn("A")})
For i = 0 To 4
.Rows.Add($"A{i}")
Next
.AcceptChanges()
End With
dv = dt.DefaultView
With FpSpread1.ActiveSheet
.DataSource = dv
.AddUnboundRows(0, 2)
.Rows(1).Visible = False
dv.RowFilter = If(dv.RowFilter.Length > 0, String.Empty, $"A LIKE '*'")
For i = 0 To .RowCount - 1
.Rows(i).ResetVisible()
Next
.AddUnboundRows(0, 2)
.Rows(1).Visible = False
End With
回避方法
Service Pack 4(v15.0.4804.2012/v15.4.0)で修正済み。
Service Pack 4を適用せずに対処する方法としては、非表示行を生成する前にGetRowVisibleメソッドを実行することで本現象を回避できます。
実装例に対する回避策
With FpSpread1.ActiveSheet
.DataSource = dv
.AddUnboundRows(0, 2)
.Rows(1).Visible = False
dv.RowFilter = If(dv.RowFilter.Length > 0, String.Empty, $"A LIKE '*'")
For i = 0 To .RowCount - 1
.Rows(i).ResetVisible()
Next
.GetRowVisible(0) ' 回避策
.AddUnboundRows(0, 2)
.Rows(1).Visible = False
End With