|
データの設定
クライアント側スクリプトで提供されるSetValue メソッドを使用するとセルに値を設定することができます。
また、同メソッドの第四引数にてonDataChanged イベントをトリガするかどうかを設定することが可能です。
true に設定すると、onDataChanged イベントはトリガされず、それ以外の場合はトリガされます。
なお、SetValue メソッドでは、読み取り専用セルや非表示セルに値を設定することができません。
これらのセルに値を設定するにはサーバー側で設定する必要があります。
このサンプルでは、ボタン押下することで、テキストボックスに入力された値をSetValueメソッドにて選択行の
「製品名」列へ設定します。
その際、onDataChanged イベントをトリガし、メッセージを出力します。
前述のとおり、SetValueメソッドの第四引数を「true」に変更することで、
イベントがトリガされなくなり、ボタン押下時にメッセージが出力されなくなります。
| 製品ID | 製品分類 | 製品名 | 第1Q | 第2Q | 第3Q | 第4Q |
1 | 10001 | 乳製品 | 酪農ミルク | 5,500 | 5,000 | 4,500 | 6,000 |
2 | 20001 | 清涼飲料水 | いよかんドリンク | 1,000 | 3,000 | 2,700 | 2,700 |
3 | 20002 | 清涼飲料水 | ぶどうジュース | 3,000 | 3,500 | 4,800 | 4,800 |
4 | 20003 | 清涼飲料水 | マンゴードリンク | 2,000 | 1,000 | 500 | 1,050 |
5 | 30001 | ビール | 激辛ビール | 5,500 | 8,000 | 8,500 | 10,000 |
6 | 30002 | ビール | モルトビール | 3,000 | 3,500 | 2,780 | 4,000 |
7 | 20004 | 清涼飲料水 | ぶどうの街 | 500 | 300 | 200 | 700 |
8 | 30003 | ビール | オリエントの村 | 8,000 | 9,500 | 9,580 | 9,000 |
9 | 40002 | 焼酎 | 吟醸 ほめごろし | 6,000 | 7,000 | 9,000 | 9,500 |
10 | 40003 | 焼酎 | 大吟醸 オリエント | 1,000 | 5,000 | 6,000 | 5,000 |
11 | 40005 | 焼酎 | 麦焼酎 ちこちこ | 1,000 | 1,500 | 1,200 | 1,258 |
12 | 10002 | 乳製品 | 酪農ミルク(低脂肪) | 501 | 202 | 380 | 456 |
|
ソースコード
別ウィンドウで表示
using System;
using System.Data;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.Configuration;
public partial class clientsetvalue : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
// クライアントイベント設定
string js = "var spid='" + FpSpread1.ClientID + "';";
js +=" var ss = document.getElementById(spid);" + "\r\n";
js +=" if (document.all) {" + "\r\n";
js +=" ss.onDataChanged = dataChanged;" + "\r\n";
js +=" } else {" + "\r\n";
js +=" ss.addEventListener(\"DataChanged\", dataChanged, false);" + "\r\n";
js +=" }" + "\r\n";
ClientScript.RegisterStartupScript(this.GetType(), "onStartUpScript", js, true);
if (IsPostBack) return;
// セル型の自動設定を無効化
FpSpread1.ActiveSheetView.DataAutoCellTypes = false;
// データ連結
DataSet ds = new DataSet();
ds.ReadXml(MapPath("../App_Data/datanum2.xml"));
FpSpread1.DataSource = ds;
FarPoint.Web.Spread.SheetView sheet = FpSpread1.Sheets[0];
// SPREAD初期化
InitSpread(FpSpread1.Sheets[0]);
}
private void InitSpread(FarPoint.Web.Spread.SheetView sheet)
{
// SPREAD設定
FpSpread1.CommandBar.Visible = false;
FpSpread1.CssClass = "spreadStyle";
FpSpread1.ShowFocusRectangle = true;
FpSpread1.UseClipboard = false;
// フォントサイズの設定
sheet.DefaultStyle.Font.Size = FontUnit.Parse("80%");
sheet.ColumnHeader.DefaultStyle.Font.Size = FontUnit.Parse("80%");
sheet.RowHeader.DefaultStyle.Font.Size = FontUnit.Parse("80%");
sheet.SheetCorner.DefaultStyle.Font.Size = FontUnit.Parse("80%");
// シート設定
sheet.PageSize = sheet.RowCount;
sheet.OperationMode = FarPoint.Web.Spread.OperationMode.RowMode;
sheet.Columns[0].Width = 45;
sheet.Columns[1].Width = 85;
sheet.Columns[2].Width = 221;
sheet.Columns[3].Width = 65;
sheet.Columns[4].Width = 65;
sheet.Columns[5].Width = 65;
sheet.Columns[6].Width = 65;
// 縦方向の揃え位置を中央に設定
sheet.DefaultStyle.VerticalAlign = VerticalAlign.Middle;
// 各列のセル型を設定
FarPoint.Web.Spread.GeneralCellType gnr = new FarPoint.Web.Spread.GeneralCellType();
gnr.FormatString = "#,##0";
sheet.Columns[3, 6].CellType = gnr;
sheet.Columns[3, 6].HorizontalAlign = HorizontalAlign.Right;
}
}
|
Partial Public Class clientsetvalue
Inherits System.Web.UI.Page
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
' クライアントイベント設定
Dim js As String = "var spid='" + FpSpread1.ClientID & "';"
js += " var ss = document.getElementById(spid);" & vbCr & vbLf
js += " if (document.all) {" & vbCr & vbLf
js += " ss.onDataChanged = dataChanged;" & vbCr & vbLf
js += " } else {" & vbCr & vbLf
js += " ss.addEventListener(""DataChanged"", dataChanged, false);" & vbCr & vbLf
js += " }" & vbCr & vbLf
ClientScript.RegisterStartupScript(Me.GetType(), "onStartUpScript", js, True)
If IsPostBack Then
Return
End If
' セル型の自動設定を無効化
FpSpread1.ActiveSheetView.DataAutoCellTypes = False
' データ連結
Dim ds As New System.Data.DataSet()
ds.ReadXml(MapPath("../App_Data/datanum2.xml"))
FpSpread1.DataSource = ds
Dim sheet As FarPoint.Web.Spread.SheetView = FpSpread1.Sheets(0)
' SPREAD初期化
InitSpread(FpSpread1.Sheets(0))
End Sub
Private Sub InitSpread(sheet As FarPoint.Web.Spread.SheetView)
' SPREAD設定
FpSpread1.CommandBar.Visible = False
FpSpread1.CssClass = "spreadStyle"
FpSpread1.ShowFocusRectangle = True
FpSpread1.UseClipboard = False
' フォントサイズの設定
sheet.DefaultStyle.Font.Size = FontUnit.Parse("80%")
sheet.ColumnHeader.DefaultStyle.Font.Size = FontUnit.Parse("80%")
sheet.RowHeader.DefaultStyle.Font.Size = FontUnit.Parse("80%")
sheet.SheetCorner.DefaultStyle.Font.Size = FontUnit.Parse("80%")
' シート設定
sheet.PageSize = sheet.RowCount
sheet.OperationMode = FarPoint.Web.Spread.OperationMode.RowMode
sheet.Columns(0).Width = 45
sheet.Columns(1).Width = 85
sheet.Columns(2).Width = 221
sheet.Columns(3).Width = 65
sheet.Columns(4).Width = 65
sheet.Columns(5).Width = 65
sheet.Columns(6).Width = 65
' 縦方向の揃え位置を中央に設定
sheet.DefaultStyle.VerticalAlign = VerticalAlign.Middle
' 各列のセル型を設定
Dim gnr As New FarPoint.Web.Spread.GeneralCellType()
gnr.FormatString = "#,##0"
sheet.Columns(3, 6).CellType = gnr
sheet.Columns(3, 6).HorizontalAlign = HorizontalAlign.Right
End Sub
End Class
|
<%@ Page MasterPageFile="~/MasterPage.master" Language="c#" AutoEventWireup="true"
Inherits="clientsetvalue" CodeFile="clientsetvalue.aspx.cs" %>
<%@ Register Assembly="FarPoint.Web.SpreadJ" Namespace="FarPoint.Web.Spread" TagPrefix="FarPoint" %>
<asp:Content ID="Content1" ContentPlaceHolderID="HeaderPlaceHolder1" Runat="Server">
<script type="text/javascript">
function dataChanged(event){
alert("セルの値が変更されました! ");
}
function spSetvalue()
{
var spread = document.getElementById(spid);
var txt = document.getElementById("Text1").value;
var row = spread.GetActiveRow();
if (txt == ""){
alert("変更する製品名を入力してください");
return
}
if (row == -1 )
{
alert("セルを選択してください。");
return;
}
spread.SetValue(row,2,txt,false);
}
</script>
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
<input id="Text1" type="text" />
<input id="Button1" type="button" value="選択行の製品名を変更" onclick="spSetvalue()" />
<farpoint:FpSpread ID="FpSpread1" runat="server" BorderColor="#A0A0A0" BorderStyle="Solid"
BorderWidth="1px">
<CommandBar BackColor="#F6F6F6" ButtonFaceColor="Control" ButtonHighlightColor="ControlLightLight"
ButtonShadowColor="ControlDark" />
<Sheets>
<farpoint:SheetView SheetName="Sheet1">
</farpoint:SheetView>
</Sheets>
</farpoint:FpSpread>
</asp:Content>
|
|