【セル型】チェックボックス型セルを設定するとSQL Server のBit型データを更新できない
対象製品
SPREAD for .NET 2.5J Web Forms Edition
発生環境
動作保証環境と同様
状況
修正済み
詳細
チェックボックス型セルを設定するとSQL Server のBit型データの更新で失敗します。
この現象はVS2005のSqlDataSourceを使用したデータ連結で発生します。
[再現手順]
1. SQL Server 2005 に下記のSQLでテスト用テーブルを作成する。
-------------- from here ---------------------
CREATE TABLE testbit
(
empid INT PRIMARY KEY,
ename CHAR(20),
ismale BIT
)
INSERT INTO testbit values(1,'Yamada',0)
INSERT INTO testbit values(2,'Miyamoto',1)
INSERT INTO testbit values(3,'Ito',1)
-------------- end here ---------------------
2. VS2005 でWebSiteを作成する。
3. WebフォームにSQLDataSource コントロールを配置し、1番で作成したテーブルに接続する。
4. SPREADを配置し、このSQLDataSourceを連結する。
--- 3列目には自動的にチェックボックス型が設定される。
5. 実行.
6. チェックボックスをチェックして「更新」ボタンを押す。
--- 更新に失敗し、セルにはツールチップで"true or false"とエラーが表示される。
この現象はVS2005のSqlDataSourceを使用したデータ連結で発生します。
[再現手順]
1. SQL Server 2005 に下記のSQLでテスト用テーブルを作成する。
-------------- from here ---------------------
CREATE TABLE testbit
(
empid INT PRIMARY KEY,
ename CHAR(20),
ismale BIT
)
INSERT INTO testbit values(1,'Yamada',0)
INSERT INTO testbit values(2,'Miyamoto',1)
INSERT INTO testbit values(3,'Ito',1)
-------------- end here ---------------------
2. VS2005 でWebSiteを作成する。
3. WebフォームにSQLDataSource コントロールを配置し、1番で作成したテーブルに接続する。
4. SPREADを配置し、このSQLDataSourceを連結する。
--- 3列目には自動的にチェックボックス型が設定される。
5. 実行.
6. チェックボックスをチェックして「更新」ボタンを押す。
--- 更新に失敗し、セルにはツールチップで"true or false"とエラーが表示される。
回避方法
2007/09/05版で修正済み。
2007/09/05版より前のバージョンでは次の回避方法が有効です。
●回避方法●
チェックボックス型セルのサブクラスを作成し、データモデルをBoolean値で更新する。
※この場合、SPREADへのデータ連結およびセル型の設定をコーディングで行って下さい。
●サンプルコード●
--------------------------
Webフォームクラス
--------------------------
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If IsPostBack Then Return
'データ連結
FpSpread1.DataSourceID = SqlDataSource1.ID
'アプリケーション側でセル型を設定
FpSpread1.Sheets(0).DataAutoCellTypes = False
'カスタムチェック型を設定
FpSpread1.Sheets(0).Columns(2).CellType = New MyCheckType
End Sub
--------------------------
カスタムチェック型セル
--------------------------
<Serializable()> Public Class MyCheckType
Inherits FarPoint.Web.Spread.CheckBoxCellType
Public Overrides Function Parse(ByVal s As String) As Object
'データモデルをBoolean型で更新する
Return Boolean.Parse(s)
End Function
End Class
2007/09/05版より前のバージョンでは次の回避方法が有効です。
●回避方法●
チェックボックス型セルのサブクラスを作成し、データモデルをBoolean値で更新する。
※この場合、SPREADへのデータ連結およびセル型の設定をコーディングで行って下さい。
●サンプルコード●
--------------------------
Webフォームクラス
--------------------------
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If IsPostBack Then Return
'データ連結
FpSpread1.DataSourceID = SqlDataSource1.ID
'アプリケーション側でセル型を設定
FpSpread1.Sheets(0).DataAutoCellTypes = False
'カスタムチェック型を設定
FpSpread1.Sheets(0).Columns(2).CellType = New MyCheckType
End Sub
--------------------------
カスタムチェック型セル
--------------------------
<Serializable()> Public Class MyCheckType
Inherits FarPoint.Web.Spread.CheckBoxCellType
Public Overrides Function Parse(ByVal s As String) As Object
'データモデルをBoolean型で更新する
Return Boolean.Parse(s)
End Function
End Class
キーワード
SPRN05897
この文書は、以前は次のバグレポートIDで公開されていました : 6598