【スクリプト】PageMaxAlign プロパティをFalseに設定した場合、最終ページでNext メソッドを呼び出すとデータが空のページが表示される
対象製品
SPREAD for .NET 2.5J Web Forms Edition
発生環境
動作保証環境と同様
状況
修正済み
詳細
PageMaxAlign プロパティをFalseに設定した場合、最終ページでNext メソッドを呼び出すとデータが空のページが表示されます。
(Next メソッドは通常、次のページが存在しない場合は、現在のページがそのまま表示されます。)
[再現手順]
1.新規WebフォームにSPREADとButtonを配置します。
2.下記のサンプルコードをコピーします。
3.アプリケーションを実行します。
4.Buttonを2回押下します。
5.データが空のページが表示されます。
[サンプルコード]
-------------------------
Webフォームクラス
-------------------------
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
If Page.IsPostBack Then
Return
End If
FpSpread1.ActiveSheetView.PageMaxAlign = False
FpSpread1.ActiveSheetView.RowCount = 20
End Sub
-------------------------
HTML
-------------------------
・
<略>
・
<SCRIPT language="javascript">
function GotoNext()
{
var spread = document.all("FpSpread1");
spread.Next();
}
</SCRIPT>
・
<略>
・
<INPUT style="Z-INDEX: 102; LEFT: 528px; POSITION: absolute; TOP: 64px" type="button" value="Button" onclick="GotoNext();">
(Next メソッドは通常、次のページが存在しない場合は、現在のページがそのまま表示されます。)
[再現手順]
1.新規WebフォームにSPREADとButtonを配置します。
2.下記のサンプルコードをコピーします。
3.アプリケーションを実行します。
4.Buttonを2回押下します。
5.データが空のページが表示されます。
[サンプルコード]
-------------------------
Webフォームクラス
-------------------------
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
If Page.IsPostBack Then
Return
End If
FpSpread1.ActiveSheetView.PageMaxAlign = False
FpSpread1.ActiveSheetView.RowCount = 20
End Sub
-------------------------
HTML
-------------------------
・
<略>
・
<SCRIPT language="javascript">
function GotoNext()
{
var spread = document.all("FpSpread1");
spread.Next();
}
</SCRIPT>
・
<略>
・
<INPUT style="Z-INDEX: 102; LEFT: 528px; POSITION: absolute; TOP: 64px" type="button" value="Button" onclick="GotoNext();">
回避方法
2007/09/05版で修正済み。
2007/09/05版より前のバージョンでは次の回避方法が有効です。
TopRowChanged イベントを利用して最終ページ以降のページへの遷移を防ぎます。
-------------------------
Webフォームクラス
-------------------------
Dim cTrow As Int32
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
If Page.IsPostBack Then
cTrow = FpSpread1.ActiveSheetView.TopRow
Return
End If
FpSpread1.ActiveSheetView.PageMaxAlign = False
FpSpread1.ActiveSheetView.RowCount = 20
End Sub
Private Sub FpSpread1_TopRowChanged(ByVal sender As Object, ByVal e As FarPoint.Web.Spread.SpreadCommandEventArgs) Handles FpSpread1.TopRowChanged
Dim trow As Int32 = CInt(e.CommandArgument)
If Not (trow < e.SheetView.RowCount) Then
e.SheetView.TopRow = cTrow
e.Handled = True
End If
End Sub
-------------------------
HTML
-------------------------
・
<略>
・
<SCRIPT language="javascript">
function GotoNext()
{
var spread = document.all("FpSpread1");
spread.Next();
}
</SCRIPT>
・
<略>
・
<INPUT style="Z-INDEX: 102; LEFT: 528px; POSITION: absolute; TOP: 64px" type="button" value="Button" onclick="GotoNext();">
2007/09/05版より前のバージョンでは次の回避方法が有効です。
TopRowChanged イベントを利用して最終ページ以降のページへの遷移を防ぎます。
-------------------------
Webフォームクラス
-------------------------
Dim cTrow As Int32
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
If Page.IsPostBack Then
cTrow = FpSpread1.ActiveSheetView.TopRow
Return
End If
FpSpread1.ActiveSheetView.PageMaxAlign = False
FpSpread1.ActiveSheetView.RowCount = 20
End Sub
Private Sub FpSpread1_TopRowChanged(ByVal sender As Object, ByVal e As FarPoint.Web.Spread.SpreadCommandEventArgs) Handles FpSpread1.TopRowChanged
Dim trow As Int32 = CInt(e.CommandArgument)
If Not (trow < e.SheetView.RowCount) Then
e.SheetView.TopRow = cTrow
e.Handled = True
End If
End Sub
-------------------------
HTML
-------------------------
・
<略>
・
<SCRIPT language="javascript">
function GotoNext()
{
var spread = document.all("FpSpread1");
spread.Next();
}
</SCRIPT>
・
<略>
・
<INPUT style="Z-INDEX: 102; LEFT: 528px; POSITION: absolute; TOP: 64px" type="button" value="Button" onclick="GotoNext();">
キーワード
SPRN05829
この文書は、以前は次のバグレポートIDで公開されていました : 6542