[SPRN06533]【VS2005】【データ連結】DataSourceオブジェクトでSelectコマンドのパラメータソースにコントロールを指定した場合、UpdateCommandイベントでセルの値を取得できないことがある

文書番号 : 25185     文書種別 : 制限事項     最終更新日 : 2007/12/08
文書を印刷する
対象製品
SPREAD for .NET 2.5J Web Forms Edition
発生環境
この現象は、Visual Studio 2005を使用した開発環境で発生します
詳細
AccessDataSourceやSQLDataSourceのSelectコマンドにWHERE句を使用し、パラメータソースにコントロール(例:TextBox)を指定した場合、UpdateCommandイベントで次の様にセルの値を取得しようとすると正しい値が取得できないことがあります。

Protected Sub FpSpread1_UpdateCommand(ByVal sender As Object, ByVal e As FarPoint.Web.Spread.SpreadCommandEventArgs) Handles FpSpread1.UpdateCommand
  Dim oldVal As String = CStr(e.SheetView.GetValue(0, 1))
  Label1.Text = oldVal
End Sub
回避方法
TextBoxにViewStateがロードされる前に、SPREADのデータバインドが行われることが原因です。
以下のようにPage.LoadイベントでTextBoxの値をセッション変数に格納し、次回のポストバックの際にPage.Initで取得することで現象を回避できます。

Protected Sub Page_Init(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Init
  If Me.IsPostBack Then
   Me.TextBox1.Text = Session("txtValue")
  End If  
End Sub

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
 Session("txtValue") = Me.TextBox1.Text
End Sub

この文書は、以前は次のFAQ IDで公開されていました : 7241