作成日: 2017/03/29 最終更新日: 2017/03/29
文書種別
使用方法
詳細
FpSpread クラスのClientAutoCalculationプロパティをTrueに設定することで数式の再計算をAJAXで処理できます。
この場合、データを変更するとサーバー側へのコールバックが発生します。
ポストバックの場合ページ全体を更新することになりますが、コールバックではSPREADのみ更新します。
◎サンプルコード(VB)
◎サンプルコード(C#)
なお、上記方法よりもレスポンスを向上させたい(コールバックもポストバックも発生させない(サーバーと通信しない)で再計算したい)場合、スクリプトで計算処理を実装する方法があります。
※この方法では「SUM」など製品の組込み関数を使用することはできません。なぜならばSPREADの計算機能はサーバー側アセンブリで実装されているため、これを使用するにはサーバーとの通信が不可欠だからです。
例えば次のようなスクリプトを実装します(この例ではデータが変更される度に"A1+A2"を実行して結果を出力します)。
◎サンプルコード(JavaScript)
この場合、データを変更するとサーバー側へのコールバックが発生します。
ポストバックの場合ページ全体を更新することになりますが、コールバックではSPREADのみ更新します。
◎サンプルコード(VB)
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If Page.IsPostBack Then
Return
End If
FpSpread1.ClientAutoCalculation = True
FpSpread1.ActiveSheetView.Cells(0, 0).Value = 10
FpSpread1.ActiveSheetView.Cells(1, 0).Value = 30
FpSpread1.ActiveSheetView.Cells(2, 0).Formula = "SUM(A1:A2)"
End Sub
If Page.IsPostBack Then
Return
End If
FpSpread1.ClientAutoCalculation = True
FpSpread1.ActiveSheetView.Cells(0, 0).Value = 10
FpSpread1.ActiveSheetView.Cells(1, 0).Value = 30
FpSpread1.ActiveSheetView.Cells(2, 0).Formula = "SUM(A1:A2)"
End Sub
◎サンプルコード(C#)
protected void Page_Load(object sender, EventArgs e)
{
if (IsPostBack)
{
return;
}
FpSpread1.ClientAutoCalculation = true;
FpSpread1.ActiveSheetView.Cells[0, 0].Value = 10;
FpSpread1.ActiveSheetView.Cells[1, 0].Value = 30;
FpSpread1.ActiveSheetView.Cells[2, 0].Formula = "SUM(A1:A2)";
}
{
if (IsPostBack)
{
return;
}
FpSpread1.ClientAutoCalculation = true;
FpSpread1.ActiveSheetView.Cells[0, 0].Value = 10;
FpSpread1.ActiveSheetView.Cells[1, 0].Value = 30;
FpSpread1.ActiveSheetView.Cells[2, 0].Formula = "SUM(A1:A2)";
}
なお、上記方法よりもレスポンスを向上させたい(コールバックもポストバックも発生させない(サーバーと通信しない)で再計算したい)場合、スクリプトで計算処理を実装する方法があります。
※この方法では「SUM」など製品の組込み関数を使用することはできません。なぜならばSPREADの計算機能はサーバー側アセンブリで実装されているため、これを使用するにはサーバーとの通信が不可欠だからです。
例えば次のようなスクリプトを実装します(この例ではデータが変更される度に"A1+A2"を実行して結果を出力します)。
◎サンプルコード(JavaScript)
<script type="text/javascript">
window.onload = init;
function init()
{
var spread = document.getElementById("FpSpread1");
if (spread.addEventListener)
{
spread.addEventListener("DataChanged", dataChanged, false);
}
else
{
spread.onDataChanged = dataChanged;
}
}
function dataChanged(e)
{
var spread = document.getElementById("FpSpread1");
var a1 = Number(spread.GetValue(0,0));
var a2 = Number(spread.GetValue(1,0));
spread.SetValue(2, 0, a1 + a2, true);
}
</script>
window.onload = init;
function init()
{
var spread = document.getElementById("FpSpread1");
if (spread.addEventListener)
{
spread.addEventListener("DataChanged", dataChanged, false);
}
else
{
spread.onDataChanged = dataChanged;
}
}
function dataChanged(e)
{
var spread = document.getElementById("FpSpread1");
var a1 = Number(spread.GetValue(0,0));
var a2 = Number(spread.GetValue(1,0));
spread.SetValue(2, 0, a1 + a2, true);
}
</script>
旧文書番号
40238