作成日: 2017/12/18 最終更新日: 2018/07/06
文書種別
不具合
状況
修正済み
詳細
グリッドに行が存在しない状態でフィルタを実行すると、System.ArgumentOutOfRangeExceptionが発生します。具体的には、以下の状態でフィルタを実行した際に、本事象が発生します。
- 行数が0の場合("RowCount = 0", "Rows.Clear()")
- すべての行が非表示の場合
回避方法
Service Pack 1(v2.0.2018.0706)で修正済みです。
Service Pack 1(v2.0.2018.0706)より前のバージョンでは次の回避方法が有効です。
------------------------------------------
RowCollectionChangedイベントを使ってフィルタ機能を無効にします。同様に、すべての行が非表示の場合にフィルタ機能を無効にします。
◎サンプルコード(VB.NET)
◎サンプルコード(C#)
Service Pack 1(v2.0.2018.0706)より前のバージョンでは次の回避方法が有効です。
------------------------------------------
RowCollectionChangedイベントを使ってフィルタ機能を無効にします。同様に、すべての行が非表示の場合にフィルタ機能を無効にします。
◎サンプルコード(VB.NET)
Private Sub GcSpreadGrid1_RowCollectionChanged(sender As Object, e As GrapeCity.Windows.SpreadGrid.SpreadCollectionChangedEventArgs) Handles GcSpreadGrid1.RowCollectionChanged If GcSpreadGrid1.RowCount = 0 Then GcSpreadGrid1.CanUserFilterColumns = False Else GcSpreadGrid1.CanUserFilterColumns = True End If End Sub
Private Sub Button1_Click(sender As Object, e As RoutedEventArgs) Handles Button1.Click GcSpreadGrid1.Rows(0).IsVisible = False GcSpreadGrid1.CanUserFilterColumns = False For Each row As GrapeCity.Windows.SpreadGrid.Row In GcSpreadGrid1.Rows If row.IsVisible Then GcSpreadGrid1.CanUserFilterColumns = True Exit For End If Next End Sub
◎サンプルコード(C#)
private void GcSpreadGrid1_RowCollectionChanged(object sender, GrapeCity.Windows.SpreadGrid.SpreadCollectionChangedEventArgs e)
{
if (GcSpreadGrid1.RowCount == 0)
{
GcSpreadGrid1.CanUserFilterColumns = false;
}
else
{
GcSpreadGrid1.CanUserFilterColumns = true;
}
}
private void Button1_Click(object sender, RoutedEventArgs e)
{
GcSpreadGrid1.Rows[0].IsVisible = false;
GcSpreadGrid1.CanUserFilterColumns = false;
foreach (GrapeCity.Windows.SpreadGrid.Row row in GcSpreadGrid1.Rows)
{
if (row.IsVisible)
{
GcSpreadGrid1.CanUserFilterColumns = true;
break;
}
}
}
旧文書番号
41448