データ連結時の新規行に設定したデフォルト値が描画されないことがある
対象製品
SPREAD for Windows Forms 8.0J
状況
修正済み
詳細
データ連結時の新規行に設定したデフォルト値が描画されないことがあります。
【手順】
1.新規フォームにSPREADを配置します
2.下記サンプルコードをコピーし、アプリケーションを実行します
3.A1セルに「a」を入力し、[Enter]キーを押下します
--D1セルに「100」が表示されません
【サンプルコード】
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
' データの作成
Dim ds As New DataSet()
Dim dt As DataTable = ds.Tables.Add("Test")
dt.Columns.Add("ColA", GetType([String]))
dt.Columns.Add("ColB", GetType([String]))
dt.Columns.Add("ColC", GetType([Boolean]))
dt.Columns.Add("ColD", GetType(Int32))
dt.Columns.Add("ColE", GetType([String]))
dt.Columns("ColC").DefaultValue = True
dt.Columns("ColD").DefaultValue = 100
dt.AcceptChanges()
' SPREADの設定
FpSpread1.ActiveSheet.DataAllowAddNew = True
FpSpread1.ActiveSheet.DataSource = ds
FpSpread1.ActiveSheet.DataMember = ds.Tables(0).TableName
End Sub
【手順】
1.新規フォームにSPREADを配置します
2.下記サンプルコードをコピーし、アプリケーションを実行します
3.A1セルに「a」を入力し、[Enter]キーを押下します
--D1セルに「100」が表示されません
【サンプルコード】
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
' データの作成
Dim ds As New DataSet()
Dim dt As DataTable = ds.Tables.Add("Test")
dt.Columns.Add("ColA", GetType([String]))
dt.Columns.Add("ColB", GetType([String]))
dt.Columns.Add("ColC", GetType([Boolean]))
dt.Columns.Add("ColD", GetType(Int32))
dt.Columns.Add("ColE", GetType([String]))
dt.Columns("ColC").DefaultValue = True
dt.Columns("ColD").DefaultValue = 100
dt.AcceptChanges()
' SPREADの設定
FpSpread1.ActiveSheet.DataAllowAddNew = True
FpSpread1.ActiveSheet.DataSource = ds
FpSpread1.ActiveSheet.DataMember = ds.Tables(0).TableName
End Sub
回避方法
Service Pack 3(v8.0.3505.2008)で修正済み。
Service Pack 3(v8.0.3505.2008)より前のバージョンでは次の回避方法が有効です。
------------------------------------------
編集終了時にInvalidateメソッドを実行します。
【サンプルコード】
Private Sub FpSpread1_EditModeOff(sender As Object, e As EventArgs) Handles FpSpread1.EditModeOff
' 対応策
If FpSpread1.ActiveSheet.ActiveRowIndex = FpSpread1.ActiveSheet.RowCount - 2 Then
FpSpread1.Invalidate(True)
End If
End Sub
Service Pack 3(v8.0.3505.2008)より前のバージョンでは次の回避方法が有効です。
------------------------------------------
編集終了時にInvalidateメソッドを実行します。
【サンプルコード】
Private Sub FpSpread1_EditModeOff(sender As Object, e As EventArgs) Handles FpSpread1.EditModeOff
' 対応策
If FpSpread1.ActiveSheet.ActiveRowIndex = FpSpread1.ActiveSheet.RowCount - 2 Then
FpSpread1.Invalidate(True)
End If
End Sub