データ連結している場合、列フッタの集計のタイプにSumIgnoreHiddenを指定すると例外が発生することがある
対象製品
SPREAD for Windows Forms 8.0J
状況
修正済み
詳細
データ連結している場合、列フッタの集計のタイプにSumIgnoreHiddenを指定すると例外が発生することがあります。
【手順】
1.新規フォームにSPREADとButton2つを配置します
2.下記サンプルコードをコピーし、アプリケーションを実行します
3.Button1をクリックします
4.Button2をクリックします
5.Button1をクリックします
--例外(System.ArgumentOutOfRangeException)が発生します
【サンプルコード】
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
' データの連結
Dim dt As New DataTable("Test")
dt.Columns.Add("ColumnA", GetType(Int32))
For i As Integer = 0 To 4
dt.Rows.Add(i)
Next
dt.AcceptChanges()
FpSpread1.ActiveSheet.DataSource = dt
' フッタの設定
FpSpread1.ActiveSheet.ColumnFooter.SetAggregationType(0, 0, FarPoint.Win.Spread.Model.AggregationType.SumIgnoreHidden)
FpSpread1.ActiveSheet.ColumnFooter.Visible = True
End Sub
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
'データがある場合、行を削除
If FpSpread1.ActiveSheet.RowCount > 0 Then
FpSpread1.ActiveSheet.Rows.Remove(0, FpSpread1.ActiveSheet.RowCount)
End If
End Sub
【手順】
1.新規フォームにSPREADとButton2つを配置します
2.下記サンプルコードをコピーし、アプリケーションを実行します
3.Button1をクリックします
4.Button2をクリックします
5.Button1をクリックします
--例外(System.ArgumentOutOfRangeException)が発生します
【サンプルコード】
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
' データの連結
Dim dt As New DataTable("Test")
dt.Columns.Add("ColumnA", GetType(Int32))
For i As Integer = 0 To 4
dt.Rows.Add(i)
Next
dt.AcceptChanges()
FpSpread1.ActiveSheet.DataSource = dt
' フッタの設定
FpSpread1.ActiveSheet.ColumnFooter.SetAggregationType(0, 0, FarPoint.Win.Spread.Model.AggregationType.SumIgnoreHidden)
FpSpread1.ActiveSheet.ColumnFooter.Visible = True
End Sub
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
'データがある場合、行を削除
If FpSpread1.ActiveSheet.RowCount > 0 Then
FpSpread1.ActiveSheet.Rows.Remove(0, FpSpread1.ActiveSheet.RowCount)
End If
End Sub
回避方法
Service Pack 2(v8.0.3503.2008)で修正済み。
Service Pack 2(v8.0.3503.2008)より前のバージョンでは次の回避方法が有効です。
------------------------------------------
データソースとの連結前にデータセットと同じ行数を設定します。
【サンプルコード】
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
' データの連結
Dim dt As New DataTable("Test")
dt.Columns.Add("ColumnA", GetType(Int32))
For i As Integer = 0 To 4
dt.Rows.Add(i)
Next
dt.AcceptChanges()
FpSpread1.ActiveSheet.RowCount = dt.Rows.Count ' 【回避策】
FpSpread1.ActiveSheet.DataSource = dt
' フッタの設定
FpSpread1.ActiveSheet.ColumnFooter.SetAggregationType(0, 0, FarPoint.Win.Spread.Model.AggregationType.SumIgnoreHidden)
FpSpread1.ActiveSheet.ColumnFooter.Visible = True
End Sub
Service Pack 2(v8.0.3503.2008)より前のバージョンでは次の回避方法が有効です。
------------------------------------------
データソースとの連結前にデータセットと同じ行数を設定します。
【サンプルコード】
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
' データの連結
Dim dt As New DataTable("Test")
dt.Columns.Add("ColumnA", GetType(Int32))
For i As Integer = 0 To 4
dt.Rows.Add(i)
Next
dt.AcceptChanges()
FpSpread1.ActiveSheet.RowCount = dt.Rows.Count ' 【回避策】
FpSpread1.ActiveSheet.DataSource = dt
' フッタの設定
FpSpread1.ActiveSheet.ColumnFooter.SetAggregationType(0, 0, FarPoint.Win.Spread.Model.AggregationType.SumIgnoreHidden)
FpSpread1.ActiveSheet.ColumnFooter.Visible = True
End Sub