【スクリプト】 [Enter]キーの押下でセルを任意の位置に移動させることはできますか?
対象製品
SPREAD for .NET 2.5J Web Forms Edition
詳細
アクティブセルを設定するクライアントスクリプトのSetActiveCellメソッドを利用することで可能です。
下記のスクリプトでは、[Enter]キーが押されるとセルのアクティブ設定を1つ下のセルに移動します。
【JavaScript サンプルコード1】
製品ではセルの編集状態を開始するStartEditメソッドが提供されます。セルがアクティブになった際に発生するonActiveCellChangedイベントとStartEditメソッドを使用することで、セルにフォーカスが移動したら直ぐに編集状態を開始(常時入力)することができます。
下記は[Enter]キーによるセルの移動と、常時入力の処理を実装するクライアント側スクリプトです。
【JavaScript サンプルコード2】
下記のスクリプトでは、[Enter]キーが押されるとセルのアクティブ設定を1つ下のセルに移動します。
【JavaScript サンプルコード1】
<SCRIPT language="javascript">
var isEdit;//編集フラグ
function window.onload(){
var spread1=document.all("FpSpread1");
if(spread1==null)
return;
spread1.onEditStart=estart;
spread1.onEditStopped=estop;
spread1.onkeyup=goToNextCell;
}
function estart(){
isEdit=true;//編集中
}
function estop(){
isEdit=false;//編集終了
}
function goToNextCell(){
if(isEdit)//編集中は移動をキャンセル
return;
if(event.keyCode!=13)
return;
var spread=document.all("FpSpread1");
var row=spread.ActiveRow;
var col=spread.ActiveCol;
spread.EndEdit();//編集を終了
spread.ClearSelection();//選択範囲をクリア
if(row+1>=spread.GetRowCount()){
if(!(col+1>=spread.GetColCount())){
spread.SetActiveCell(0,col+1);
}
else{
spread.SetActiveCell(0,0);
}
}
else{
spread.SetActiveCell(row+1,spread.ActiveCol);
}
}
</SCRIPT>
var isEdit;//編集フラグ
function window.onload(){
var spread1=document.all("FpSpread1");
if(spread1==null)
return;
spread1.onEditStart=estart;
spread1.onEditStopped=estop;
spread1.onkeyup=goToNextCell;
}
function estart(){
isEdit=true;//編集中
}
function estop(){
isEdit=false;//編集終了
}
function goToNextCell(){
if(isEdit)//編集中は移動をキャンセル
return;
if(event.keyCode!=13)
return;
var spread=document.all("FpSpread1");
var row=spread.ActiveRow;
var col=spread.ActiveCol;
spread.EndEdit();//編集を終了
spread.ClearSelection();//選択範囲をクリア
if(row+1>=spread.GetRowCount()){
if(!(col+1>=spread.GetColCount())){
spread.SetActiveCell(0,col+1);
}
else{
spread.SetActiveCell(0,0);
}
}
else{
spread.SetActiveCell(row+1,spread.ActiveCol);
}
}
</SCRIPT>
製品ではセルの編集状態を開始するStartEditメソッドが提供されます。セルがアクティブになった際に発生するonActiveCellChangedイベントとStartEditメソッドを使用することで、セルにフォーカスが移動したら直ぐに編集状態を開始(常時入力)することができます。
下記は[Enter]キーによるセルの移動と、常時入力の処理を実装するクライアント側スクリプトです。
【JavaScript サンプルコード2】
<SCRIPT language="javascript">
var isEdit;//編集フラグ
function window.onload(){
var spread1=document.all("FpSpread1");
if(spread1==null)
return;
spread1.onEditStart=estart;
spread1.onEditStopped=estop;
spread1.onkeyup=goToNextCell;
spread1.onActiveCellChanged=startEditMode;
}
function estart(){
isEdit=true;//編集中
}
function estop(){
isEdit=false;//編集終了
}
function goToNextCell(){
if(isEdit)//編集中は移動をキャンセル
return;
if(event.keyCode!=13)
return;
var spread=document.all("FpSpread1");
var row=spread.ActiveRow;
var col=spread.ActiveCol;
spread.EndEdit();//編集を終了
spread.ClearSelection();//選択範囲をクリア
if(row+1>=spread.GetRowCount()){
if(!(col+1>=spread.GetColCount())){
spread.SetActiveCell(0,col+1);
}
else{
spread.SetActiveCell(0,0);
}
}
else{
spread.SetActiveCell(row+1,spread.ActiveCol);
}
var td=spread.GetCellByRowCol(spread.ActiveRow,spread.ActiveCol);
spread.StartEdit(td);
}
function startEditMode(){
var s=event.srcElement;
s.StartEdit();
}
</SCRIPT>
var isEdit;//編集フラグ
function window.onload(){
var spread1=document.all("FpSpread1");
if(spread1==null)
return;
spread1.onEditStart=estart;
spread1.onEditStopped=estop;
spread1.onkeyup=goToNextCell;
spread1.onActiveCellChanged=startEditMode;
}
function estart(){
isEdit=true;//編集中
}
function estop(){
isEdit=false;//編集終了
}
function goToNextCell(){
if(isEdit)//編集中は移動をキャンセル
return;
if(event.keyCode!=13)
return;
var spread=document.all("FpSpread1");
var row=spread.ActiveRow;
var col=spread.ActiveCol;
spread.EndEdit();//編集を終了
spread.ClearSelection();//選択範囲をクリア
if(row+1>=spread.GetRowCount()){
if(!(col+1>=spread.GetColCount())){
spread.SetActiveCell(0,col+1);
}
else{
spread.SetActiveCell(0,0);
}
}
else{
spread.SetActiveCell(row+1,spread.ActiveCol);
}
var td=spread.GetCellByRowCol(spread.ActiveRow,spread.ActiveCol);
spread.StartEdit(td);
}
function startEditMode(){
var s=event.srcElement;
s.StartEdit();
}
</SCRIPT>
キーワード
クライアント側スクリプト
この文書は、以前は次のFAQ IDで公開されていました : 9106