クライアント側スクリプトでポストバックを発生させたら変更値が反映されなかった
対象製品
SPREAD for .NET 2.5J Web Forms Edition
詳細
クライアント側スクリプトにて Form.submit() などを実行してポストバックを発生させた時、SPREAD上の変更内容が反映されない可能性があります。
これはSPREADの最新の状態がポストバックデータに保存されていなかったことが原因として考えられます。
SPREADでは、クライアント側メソッドUpdatePostbackDataメソッドを実行することで、 SPREADの最新の状態をポストバックデータに保存することができます。
なお、この場合もクライアント側での変更を確定するにはサーバー側でSaveChangeメソッドを実行する必要があります。SaveChangesメソッドについては、関連情報をこのFAQの最後にある「関連するFAQ」でも掲載しています。
【VB サンプルコード】
これはSPREADの最新の状態がポストバックデータに保存されていなかったことが原因として考えられます。
SPREADでは、クライアント側メソッドUpdatePostbackDataメソッドを実行することで、 SPREADの最新の状態をポストバックデータに保存することができます。
なお、この場合もクライアント側での変更を確定するにはサーバー側でSaveChangeメソッドを実行する必要があります。SaveChangesメソッドについては、関連情報をこのFAQの最後にある「関連するFAQ」でも掲載しています。
【VB サンプルコード】
------------------------
クライアント側スクリプト
------------------------
<script language="javascript">
function window.onload(){
var sprd = document.all("FpSpread1");
if (sprd != null) {
sprd.onDataChanged = dataChanged
}
}
function dataChanged() {
var sprd = document.all("FpSpread1");
sprd.UpdatePostbackData();//ポストバックデータを更新します。
window.self.document.Form1.submit(); //Form1はフォームのIDです。
}
</script>
------------------------
Webフォームクラス
------------------------
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
If Page.IsPostBack Then
'変更の確定
FpSpread1.SaveChanges()
End If
End Sub
クライアント側スクリプト
------------------------
<script language="javascript">
function window.onload(){
var sprd = document.all("FpSpread1");
if (sprd != null) {
sprd.onDataChanged = dataChanged
}
}
function dataChanged() {
var sprd = document.all("FpSpread1");
sprd.UpdatePostbackData();//ポストバックデータを更新します。
window.self.document.Form1.submit(); //Form1はフォームのIDです。
}
</script>
------------------------
Webフォームクラス
------------------------
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
If Page.IsPostBack Then
'変更の確定
FpSpread1.SaveChanges()
End If
End Sub
関連情報
キーワード
クライアント側スクリプト
この文書は、以前は次のFAQ IDで公開されていました : 9175