作成日: 2019/05/31 最終更新日: 2019/09/30
文書種別
不具合
状況
修正済み
詳細
SPREADがDBNull.Valueを含んだデータソースに連結されている場合、日付型セルのEditMode.FormatStringプロパティを使用すると、下記のような例外が発生します。
System.ArgumentException: Cannot convert value to DateTime
System.ArgumentException: Cannot convert value to DateTime
回避方法
Service Pack 5(v10.0.4010.2013)で修正済み。
Service Pack 5より前のバージョンでは次の回避方法が有効です。
------------------------------------------
下記のようにFormat関数をオーバーライドしたカスタムセルを使用する方法により回避できます。
-------------------
Public Class _Default
Inherits System.Web.UI.Page
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If Page.IsPostBack Then Return
'Dim dCell As New FarPoint.Web.Spread.DateTimeCellType()
Dim dCell As New MyDateTimeCellType() '回避策
dCell.EditMode.FormatString = "MM/dd"
FpSpread1.ActiveSheetView.DataAutoCellTypes = False
FpSpread1.ActiveSheetView.Columns(0).CellType = dCell
FpSpread1.DataSourceID = "SqlDataSource1"
FpSpread1.DataBind()
End Sub
End Class
'回避策
Class MyDateTimeCellType
Inherits FarPoint.Web.Spread.DateTimeCellType
Public Overrides Function Format(obj As Object, FormatString As String, provider As IFormatProvider) As String
If obj Is System.DBNull.Value Then
Return String.Empty
End If
Return MyBase.Format(obj, FormatString, provider)
End Function
End Class
Service Pack 5より前のバージョンでは次の回避方法が有効です。
------------------------------------------
下記のようにFormat関数をオーバーライドしたカスタムセルを使用する方法により回避できます。
-------------------
Public Class _Default
Inherits System.Web.UI.Page
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If Page.IsPostBack Then Return
'Dim dCell As New FarPoint.Web.Spread.DateTimeCellType()
Dim dCell As New MyDateTimeCellType() '回避策
dCell.EditMode.FormatString = "MM/dd"
FpSpread1.ActiveSheetView.DataAutoCellTypes = False
FpSpread1.ActiveSheetView.Columns(0).CellType = dCell
FpSpread1.DataSourceID = "SqlDataSource1"
FpSpread1.DataBind()
End Sub
End Class
'回避策
Class MyDateTimeCellType
Inherits FarPoint.Web.Spread.DateTimeCellType
Public Overrides Function Format(obj As Object, FormatString As String, provider As IFormatProvider) As String
If obj Is System.DBNull.Value Then
Return String.Empty
End If
Return MyBase.Format(obj, FormatString, provider)
End Function
End Class
旧文書番号
84010