作成日: 2017/05/16 最終更新日: 2017/05/16
文書種別
使用方法
詳細
セルへの入力が完了した際、クライアント側ではonDataChangedイベントが発生します。その際に、CallBackメソッドを呼び出すことでサーバー側で入力されたセル内容をもとに別のセルへ値を設定することが可能です。
下記のコードは1列目~3列目のデータを変更すると、サーバー側へコールバックして4列目に値を設定するサンプルです。
・1列目:チェックボックス型セル
・2列目:コンボボックス型セル
・3列目:標準型セル
・4列目:標準型セル
◎サンプルコード(VB)
◎サンプルコード(C#)
下記のコードは1列目~3列目のデータを変更すると、サーバー側へコールバックして4列目に値を設定するサンプルです。
・1列目:チェックボックス型セル
・2列目:コンボボックス型セル
・3列目:標準型セル
・4列目:標準型セル
◎サンプルコード(VB)
-------------------------------
Webフォームクラス
-------------------------------
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If IsPostBack Then
Return
End If
FpSpread1.Width = 700
FpSpread1.ActiveSheetView.ColumnCount = 4
FpSpread1.ActiveSheetView.SetColumnWidth(3, 400)
' 1列目にチェックボックス型セル
FpSpread1.ActiveSheetView.Columns(0).CellType = New FarPoint.Web.Spread.CheckBoxCellType
' 2列目にコンボボックス型セル
Dim cbstr As String()
Dim cbval As String()
cbstr = New String() {"1月", "2月", "3月"}
cbval = New String() {"Jan", "Feb", "Mar"}
Dim cmbbx1 As New FarPoint.Web.Spread.ComboBoxCellType(cbstr, cbval)
FpSpread1.ActiveSheetView.Columns(1).CellType = cmbbx1
' 3列目はデフォルトの標準型セル
' 4列目はサーバー側で値設定用のため、ロックする
FpSpread1.ActiveSheetView.Columns(3).Locked = True
End Sub
Private Sub FpSpread1_ButtonCommand(ByVal sender As Object, ByVal e As FarPoint.Web.Spread.SpreadCommandEventArgs) Handles FpSpread1.ButtonCommand
If e.CommandName = "dchange" Then
' データ変更行と列をパラメータから取得
Dim p As System.Drawing.Point = CType(e.CommandArgument, Drawing.Point)
Dim chgctl As String = ""
If p.Y = 0 Then
chgctl = "チェックボックス"
ElseIf p.Y = 1 Then
chgctl = "コンボボックス"
ElseIf p.Y = 2 Then
chgctl = "テキストボックス"
End If
FpSpread1.ActiveSheetView.Cells(p.X, 3).Value = "この行の" & chgctl & "が変更されました"
End If
End Sub
-------------------------------
クライアント側スクリプト
-------------------------------
<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 e = e || window.event;
var spread = document.getElementById("FpSpread1");
var col = e.cell.cellIndex;
var ar = spread.GetActiveRow();
if(col == 0 || col == 1 || col ==2)
{
spread.UpdatePostbackData();
//該当行と該当列を引数に設定
spread.CallBack("dchange," + ar + "," + col);
}
}
</script>
Webフォームクラス
-------------------------------
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If IsPostBack Then
Return
End If
FpSpread1.Width = 700
FpSpread1.ActiveSheetView.ColumnCount = 4
FpSpread1.ActiveSheetView.SetColumnWidth(3, 400)
' 1列目にチェックボックス型セル
FpSpread1.ActiveSheetView.Columns(0).CellType = New FarPoint.Web.Spread.CheckBoxCellType
' 2列目にコンボボックス型セル
Dim cbstr As String()
Dim cbval As String()
cbstr = New String() {"1月", "2月", "3月"}
cbval = New String() {"Jan", "Feb", "Mar"}
Dim cmbbx1 As New FarPoint.Web.Spread.ComboBoxCellType(cbstr, cbval)
FpSpread1.ActiveSheetView.Columns(1).CellType = cmbbx1
' 3列目はデフォルトの標準型セル
' 4列目はサーバー側で値設定用のため、ロックする
FpSpread1.ActiveSheetView.Columns(3).Locked = True
End Sub
Private Sub FpSpread1_ButtonCommand(ByVal sender As Object, ByVal e As FarPoint.Web.Spread.SpreadCommandEventArgs) Handles FpSpread1.ButtonCommand
If e.CommandName = "dchange" Then
' データ変更行と列をパラメータから取得
Dim p As System.Drawing.Point = CType(e.CommandArgument, Drawing.Point)
Dim chgctl As String = ""
If p.Y = 0 Then
chgctl = "チェックボックス"
ElseIf p.Y = 1 Then
chgctl = "コンボボックス"
ElseIf p.Y = 2 Then
chgctl = "テキストボックス"
End If
FpSpread1.ActiveSheetView.Cells(p.X, 3).Value = "この行の" & chgctl & "が変更されました"
End If
End Sub
-------------------------------
クライアント側スクリプト
-------------------------------
<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 e = e || window.event;
var spread = document.getElementById("FpSpread1");
var col = e.cell.cellIndex;
var ar = spread.GetActiveRow();
if(col == 0 || col == 1 || col ==2)
{
spread.UpdatePostbackData();
//該当行と該当列を引数に設定
spread.CallBack("dchange," + ar + "," + col);
}
}
</script>
◎サンプルコード(C#)
-------------------------------
Webフォームクラス
-------------------------------
protected void Page_Load(object sender, EventArgs e)
{
if (Page.IsPostBack)
{
return;
}
fpSpread1.Width = 700;
fpSpread1.ActiveSheetView.ColumnCount = 4;
fpSpread1.ActiveSheetView.SetColumnWidth(3, 400);
// 1列目にチェックボックス型セル
fpSpread1.ActiveSheetView.Columns[0].CellType = new FarPoint.Web.Spread.CheckBoxCellType();
// 2列目にコンボボックス型セル
string[] cbstr;
string[] cbval;
cbstr = new String[] {"1月", "2月", "3月"};
cbval = new String[] {"Jan", "Feb", "Mar"};
FarPoint.Web.Spread.ComboBoxCellType cmbbx1 = new FarPoint.Web.Spread.ComboBoxCellType(cbstr, cbval);
fpSpread1.ActiveSheetView.Columns[1].CellType = cmbbx1;
// 3列目はデフォルトの標準型セル
// 4列目はサーバー側で値設定用のため、ロックする
fpSpread1.ActiveSheetView.Columns[3].Locked = true;
}
protected void fpSpread1_ButtonCommand(object sender, FarPoint.Web.Spread.SpreadCommandEventArgs e)
{
if (e.CommandName == "dchange"){
// データ変更行と列をパラメータから取得
System.Drawing.Point p = (System.Drawing.Point)e.CommandArgument;
string chgctl = "";
if (p.Y == 0){
chgctl = "チェックボックス";
} else if (p.Y == 1) {
chgctl = "コンボボックス";
} else if (p.Y == 2) {
chgctl = "テキストボックス";
}
fpSpread1.ActiveSheetView.Cells[p.X, 3].Value = "この行の" + chgctl + "が変更されました";
}
}
-------------------------------
クライアント側スクリプト
-------------------------------
VB.NETのサンプルコードで紹介しているものと同様です。
Webフォームクラス
-------------------------------
protected void Page_Load(object sender, EventArgs e)
{
if (Page.IsPostBack)
{
return;
}
fpSpread1.Width = 700;
fpSpread1.ActiveSheetView.ColumnCount = 4;
fpSpread1.ActiveSheetView.SetColumnWidth(3, 400);
// 1列目にチェックボックス型セル
fpSpread1.ActiveSheetView.Columns[0].CellType = new FarPoint.Web.Spread.CheckBoxCellType();
// 2列目にコンボボックス型セル
string[] cbstr;
string[] cbval;
cbstr = new String[] {"1月", "2月", "3月"};
cbval = new String[] {"Jan", "Feb", "Mar"};
FarPoint.Web.Spread.ComboBoxCellType cmbbx1 = new FarPoint.Web.Spread.ComboBoxCellType(cbstr, cbval);
fpSpread1.ActiveSheetView.Columns[1].CellType = cmbbx1;
// 3列目はデフォルトの標準型セル
// 4列目はサーバー側で値設定用のため、ロックする
fpSpread1.ActiveSheetView.Columns[3].Locked = true;
}
protected void fpSpread1_ButtonCommand(object sender, FarPoint.Web.Spread.SpreadCommandEventArgs e)
{
if (e.CommandName == "dchange"){
// データ変更行と列をパラメータから取得
System.Drawing.Point p = (System.Drawing.Point)e.CommandArgument;
string chgctl = "";
if (p.Y == 0){
chgctl = "チェックボックス";
} else if (p.Y == 1) {
chgctl = "コンボボックス";
} else if (p.Y == 2) {
chgctl = "テキストボックス";
}
fpSpread1.ActiveSheetView.Cells[p.X, 3].Value = "この行の" + chgctl + "が変更されました";
}
}
-------------------------------
クライアント側スクリプト
-------------------------------
VB.NETのサンプルコードで紹介しているものと同様です。
旧文書番号
40352