作成日: 2019/09/10 最終更新日: 2019/12/20
文書種別
不具合
状況
修正済み
詳細
AutoGenerateColumnsをFalseに設定した状態でデータ連結時にデータソースをクリアすると、データを再追加してもSPREAD上に値が表示されません。
【再現手順】
1.新規作成したプロジェクトのForm1にFpSpreadとButtonを配置する
2.下記のサンプルコードを記述する
2.プロジェクトをデバッグ実行する
3.Button1を押下する
■サンプルコード(VB.NET)
【再現手順】
1.新規作成したプロジェクトのForm1にFpSpreadとButtonを配置する
2.下記のサンプルコードを記述する
2.プロジェクトをデバッグ実行する
3.Button1を押下する
■サンプルコード(VB.NET)
Public Class CustomData
Public Property DataA As String
Public Property DataB As String
End Class
Private items As New BindingList(Of CustomData)
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
' バージョンの確認
Me.Text = FpSpread1.ProductVersion
' データの作成
Dim r As New Random()
For i As Integer = 0 To 99
items.Add(New CustomData() With {.DataA = $"A{r.Next(1, 100)}", .DataB = $"B{i}"})
Next
' SPREADの設定
FpSpread1.ActiveSheet.AutoGenerateColumns = False
FpSpread1.ActiveSheet.Columns(0).DataField = "DataA"
FpSpread1.ActiveSheet.Columns(1).DataField = "DataB"
FpSpread1.ActiveSheet.DataSource = items
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
' データソースのクリア
items.Clear()
' データの設定
For i As Integer = 0 To 9
items.Add(New CustomData() With {.DataA = $"a{i}", .DataB = $"b{i}"})
Next
End Sub
Public Property DataA As String
Public Property DataB As String
End Class
Private items As New BindingList(Of CustomData)
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
' バージョンの確認
Me.Text = FpSpread1.ProductVersion
' データの作成
Dim r As New Random()
For i As Integer = 0 To 99
items.Add(New CustomData() With {.DataA = $"A{r.Next(1, 100)}", .DataB = $"B{i}"})
Next
' SPREADの設定
FpSpread1.ActiveSheet.AutoGenerateColumns = False
FpSpread1.ActiveSheet.Columns(0).DataField = "DataA"
FpSpread1.ActiveSheet.Columns(1).DataField = "DataB"
FpSpread1.ActiveSheet.DataSource = items
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
' データソースのクリア
items.Clear()
' データの設定
For i As Integer = 0 To 9
items.Add(New CustomData() With {.DataA = $"a{i}", .DataB = $"b{i}"})
Next
End Sub
回避方法
Service Pack 3(v12.0.4504.2012 )で修正済み。
Service Pack を適用せずに対処する方法としては、アイテムのクリア時にオブジェクトの型を明示的に設定するで回避が可能です。
■サンプルコード(VB.NET)
Service Pack を適用せずに対処する方法としては、アイテムのクリア時にオブジェクトの型を明示的に設定するで回避が可能です。
■サンプルコード(VB.NET)
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
' データソースのクリア
items.Clear()
' 回避策(オブジェクトの型の明示的な設定)
DirectCast(FpSpread1.ActiveSheet.Models.Data, FarPoint.Win.Spread.Model.DefaultSheetDataModel).ItemType = GetType(CustomData)
' データの設定
For i As Integer = 0 To 9
items.Add(New CustomData() With {.DataA = $"a{i}", .DataB = $"b{i}"})
Next
End Sub
' データソースのクリア
items.Clear()
' 回避策(オブジェクトの型の明示的な設定)
DirectCast(FpSpread1.ActiveSheet.Models.Data, FarPoint.Win.Spread.Model.DefaultSheetDataModel).ItemType = GetType(CustomData)
' データの設定
For i As Integer = 0 To 9
items.Add(New CustomData() With {.DataA = $"a{i}", .DataB = $"b{i}"})
Next
End Sub
旧文書番号
84466