【階層】孫階層セルの設定を行いたい
対象製品
SPREAD for .NET 2.5J Web Forms Edition
詳細
SheetView クラスのGetChildView メソッドにて子階層SheetViewオブジェクトを取得することができます。
同様にして孫階層のSheetViewオブジェクトを取得することができますので、取得されたSheetViewオブジェクトから孫階層の背景色/文字色の設定などが行えます。
以下のサンプルコードではButton1押下により、孫階層セルの値の変更、背景色の変更を行っています。
【VB サンプルコード】
【C# サンプルコード】
同様にして孫階層のSheetViewオブジェクトを取得することができますので、取得されたSheetViewオブジェクトから孫階層の背景色/文字色の設定などが行えます。
以下のサンプルコードではButton1押下により、孫階層セルの値の変更、背景色の変更を行っています。
【VB サンプルコード】
Dim myDataSet As New DataSet
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
If Page.IsPostBack Then
Else
' サンプルで使用するデータを作成します
InitData()
' Spreadの設定を行います
InitSpread()
End If
End Sub
Sub InitData()
Dim fpParent As DataTable
Dim fpChild1 As DataTable
Dim fpChild2 As DataTable
fpParent = myDataSet.Tables.Add("親")
fpParent.Columns.AddRange(New DataColumn() {New DataColumn("製品分類", Type.GetType("System.String")), New DataColumn("原産国", Type.GetType("System.String")), New DataColumn("id1", Type.GetType("System.Int32"))})
fpParent.Rows.Add(New Object() {"お酒", "日本", 0})
fpParent.Rows.Add(New Object() {"ソフトドリンク", "日本", 1})
fpChild1 = myDataSet.Tables.Add("子")
fpChild1.Columns.AddRange(New DataColumn() {New DataColumn("製品名", Type.GetType("System.String")), New DataColumn("原産地", Type.GetType("System.String")), New DataColumn("id2", Type.GetType("System.Int32")), New DataColumn("id3", Type.GetType("System.String"))})
' 最初の行を追加します
fpChild1.Rows.Add(New Object() {"吟醸 ほめごろし", "静岡", 0, "0-0"})
fpChild1.Rows.Add(New Object() {"麦焼酎 ちこちこ", "大分", 0, "0-1"})
' 2番目の行を追加します
fpChild1.Rows.Add(New Object() {"いよかんドリンク", "愛媛", 1, "1-0"})
fpChild1.Rows.Add(New Object() {"ずんだミルク", "宮城", 1, "1-1"})
fpChild2 = myDataSet.Tables.Add("孫")
fpChild2.Columns.AddRange(New DataColumn() {New DataColumn("在庫", Type.GetType("System.String")), New DataColumn("id4", Type.GetType("System.String"))})
' 最初の行を追加します
fpChild2.Rows.Add(New Object() {"100", "0-0"})
fpChild2.Rows.Add(New Object() {"50", "0-1"})
' 2番目の行を追加します
fpChild2.Rows.Add(New Object() {"250", "1-0"})
fpChild2.Rows.Add(New Object() {"3", "1-1"})
' リレーションシップを設定します
myDataSet.Relations.Add("階層1", fpParent.Columns("id1"), fpChild1.Columns("id2"))
myDataSet.Relations.Add("階層2", fpChild1.Columns("id3"), fpChild2.Columns("id4"))
End Sub
Sub InitSpread()
' シートの階層表示を行います
FpSpread1.HierarchicalView = True
FpSpread1.ActiveSheetView.DataSource = myDataSet
FpSpread1.ActiveSheetView.DataMember = "親"
' ID列は非表示に設定します
FpSpread1.ActiveSheetView.Columns(2).Visible = False
' 親階層2列目の子階層・孫階層を展開して表示します
Dim i As Integer
FpSpread1.ActiveSheetView.ExpandRow(1, True)
For i = 0 To FpSpread1.ActiveSheetView.RowCount - 1
' 子階層のSheetViewオブジェクト
Dim cv1 As FarPoint.Web.Spread.SheetView = FpSpread1.ActiveSheetView.GetChildView(1, 0)
cv1.ExpandRow(i, True)
Next
' SPREADコントロールのサイズの設定
FpSpread1.Height = Unit.Pixel(450)
FpSpread1.Width = Unit.Pixel(300)
End Sub
Private Sub FpSpread1_ChildViewCreated(ByVal sender As System.Object, ByVal e As FarPoint.Web.Spread.CreateChildViewEventArgs) Handles FpSpread1.ChildViewCreated
Select Case e.SheetView.RelationName
Case "階層1"
' ID列は非表示に設定します
e.SheetView.Columns(2).Visible = False
e.SheetView.Columns(3).Visible = False
e.SheetView.Columns(0).Width = 150
Case "階層2"
' ID列は非表示に設定します
e.SheetView.Columns(1).Visible = False
End Select
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
' クライアント側の変更の確定します
FpSpread1.SaveChanges()
' 親階層のSheetViewオブジェクト
Dim sv As FarPoint.Web.Spread.SheetView = FpSpread1.ActiveSheetView
Dim i As Integer
Dim j As Integer
' 子階層のSheetViewオブジェクト
Dim cv1 As FarPoint.Web.Spread.SheetView
For i = 0 To FpSpread1.ActiveSheetView.RowCount - 1
' 各親行に関連する子階層のSheetViewオブジェクトを取得
cv1 = FpSpread1.ActiveSheetView.GetChildView(i, 0)
If Not (cv1.RowCount = 0) Then
' 孫階層のSheetViewオブジェクト
Dim cv2 As FarPoint.Web.Spread.SheetView
For j = 0 To cv1.RowCount - 1
' 各子行に関連する孫階層のSheetViewオブジェクトを取得
cv2 = cv1.GetChildView(j, 0)
If Not (cv1.RowCount = 0) Then
' 孫階層のA1セルの設定
cv2.Cells(0, 0).Value = "Sold Out!"
cv2.Cells(0, 0).BackColor = Color.Red
End If
Next
End If
Next
End Sub
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
If Page.IsPostBack Then
Else
' サンプルで使用するデータを作成します
InitData()
' Spreadの設定を行います
InitSpread()
End If
End Sub
Sub InitData()
Dim fpParent As DataTable
Dim fpChild1 As DataTable
Dim fpChild2 As DataTable
fpParent = myDataSet.Tables.Add("親")
fpParent.Columns.AddRange(New DataColumn() {New DataColumn("製品分類", Type.GetType("System.String")), New DataColumn("原産国", Type.GetType("System.String")), New DataColumn("id1", Type.GetType("System.Int32"))})
fpParent.Rows.Add(New Object() {"お酒", "日本", 0})
fpParent.Rows.Add(New Object() {"ソフトドリンク", "日本", 1})
fpChild1 = myDataSet.Tables.Add("子")
fpChild1.Columns.AddRange(New DataColumn() {New DataColumn("製品名", Type.GetType("System.String")), New DataColumn("原産地", Type.GetType("System.String")), New DataColumn("id2", Type.GetType("System.Int32")), New DataColumn("id3", Type.GetType("System.String"))})
' 最初の行を追加します
fpChild1.Rows.Add(New Object() {"吟醸 ほめごろし", "静岡", 0, "0-0"})
fpChild1.Rows.Add(New Object() {"麦焼酎 ちこちこ", "大分", 0, "0-1"})
' 2番目の行を追加します
fpChild1.Rows.Add(New Object() {"いよかんドリンク", "愛媛", 1, "1-0"})
fpChild1.Rows.Add(New Object() {"ずんだミルク", "宮城", 1, "1-1"})
fpChild2 = myDataSet.Tables.Add("孫")
fpChild2.Columns.AddRange(New DataColumn() {New DataColumn("在庫", Type.GetType("System.String")), New DataColumn("id4", Type.GetType("System.String"))})
' 最初の行を追加します
fpChild2.Rows.Add(New Object() {"100", "0-0"})
fpChild2.Rows.Add(New Object() {"50", "0-1"})
' 2番目の行を追加します
fpChild2.Rows.Add(New Object() {"250", "1-0"})
fpChild2.Rows.Add(New Object() {"3", "1-1"})
' リレーションシップを設定します
myDataSet.Relations.Add("階層1", fpParent.Columns("id1"), fpChild1.Columns("id2"))
myDataSet.Relations.Add("階層2", fpChild1.Columns("id3"), fpChild2.Columns("id4"))
End Sub
Sub InitSpread()
' シートの階層表示を行います
FpSpread1.HierarchicalView = True
FpSpread1.ActiveSheetView.DataSource = myDataSet
FpSpread1.ActiveSheetView.DataMember = "親"
' ID列は非表示に設定します
FpSpread1.ActiveSheetView.Columns(2).Visible = False
' 親階層2列目の子階層・孫階層を展開して表示します
Dim i As Integer
FpSpread1.ActiveSheetView.ExpandRow(1, True)
For i = 0 To FpSpread1.ActiveSheetView.RowCount - 1
' 子階層のSheetViewオブジェクト
Dim cv1 As FarPoint.Web.Spread.SheetView = FpSpread1.ActiveSheetView.GetChildView(1, 0)
cv1.ExpandRow(i, True)
Next
' SPREADコントロールのサイズの設定
FpSpread1.Height = Unit.Pixel(450)
FpSpread1.Width = Unit.Pixel(300)
End Sub
Private Sub FpSpread1_ChildViewCreated(ByVal sender As System.Object, ByVal e As FarPoint.Web.Spread.CreateChildViewEventArgs) Handles FpSpread1.ChildViewCreated
Select Case e.SheetView.RelationName
Case "階層1"
' ID列は非表示に設定します
e.SheetView.Columns(2).Visible = False
e.SheetView.Columns(3).Visible = False
e.SheetView.Columns(0).Width = 150
Case "階層2"
' ID列は非表示に設定します
e.SheetView.Columns(1).Visible = False
End Select
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
' クライアント側の変更の確定します
FpSpread1.SaveChanges()
' 親階層のSheetViewオブジェクト
Dim sv As FarPoint.Web.Spread.SheetView = FpSpread1.ActiveSheetView
Dim i As Integer
Dim j As Integer
' 子階層のSheetViewオブジェクト
Dim cv1 As FarPoint.Web.Spread.SheetView
For i = 0 To FpSpread1.ActiveSheetView.RowCount - 1
' 各親行に関連する子階層のSheetViewオブジェクトを取得
cv1 = FpSpread1.ActiveSheetView.GetChildView(i, 0)
If Not (cv1.RowCount = 0) Then
' 孫階層のSheetViewオブジェクト
Dim cv2 As FarPoint.Web.Spread.SheetView
For j = 0 To cv1.RowCount - 1
' 各子行に関連する孫階層のSheetViewオブジェクトを取得
cv2 = cv1.GetChildView(j, 0)
If Not (cv1.RowCount = 0) Then
' 孫階層のA1セルの設定
cv2.Cells(0, 0).Value = "Sold Out!"
cv2.Cells(0, 0).BackColor = Color.Red
End If
Next
End If
Next
End Sub
【C# サンプルコード】
DataSet myDataSet = new DataSet();
private void Page_Load(object sender, System.EventArgs e)
{
if (Page.IsPostBack)
{
}
else
{
// サンプルで使用するデータを作成します
InitData();
// Spreadの設定を行います
InitSpread();
}
}
void InitData()
{
DataTable fpParent;
DataTable fpChild1;
DataTable fpChild2;
fpParent = myDataSet.Tables.Add("親");
fpParent.Columns.AddRange(new DataColumn[]{new DataColumn("製品分類", Type.GetType("System.String")), new DataColumn("原産国", Type.GetType("System.String")), new DataColumn("id1", Type.GetType("System.Int32"))});
fpParent.Rows.Add(new object[]{"お酒", "日本", 0});
fpParent.Rows.Add(new object[]{"ソフトドリンク", "日本", 1});
fpChild1 = myDataSet.Tables.Add("子");
fpChild1.Columns.AddRange(new DataColumn[]{new DataColumn("製品名", Type.GetType("System.String")), new DataColumn("原産地", Type.GetType("System.String")), new DataColumn("id2", Type.GetType("System.Int32")), new DataColumn("id3", Type.GetType("System.String"))});
// 最初の行を追加します
fpChild1.Rows.Add(new object[]{"吟醸 ほめごろし", "静岡", 0, "0-0"});
fpChild1.Rows.Add(new object[]{"麦焼酎 ちこちこ", "大分", 0, "0-1"});
// 2番目の行を追加します
fpChild1.Rows.Add(new object[]{"いよかんドリンク", "愛媛", 1, "1-0"});
fpChild1.Rows.Add(new object[]{"ずんだミルク", "宮城", 1, "1-1"});
fpChild2 = myDataSet.Tables.Add("孫");
fpChild2.Columns.AddRange(new DataColumn[]{new DataColumn("在庫", Type.GetType("System.String")), new DataColumn("id4", Type.GetType("System.String"))});
// 最初の行を追加します
fpChild2.Rows.Add(new object[]{"100", "0-0"});
fpChild2.Rows.Add(new object[]{"50", "0-1"});
// 2番目の行を追加します
fpChild2.Rows.Add(new object[]{"250", "1-0"});
fpChild2.Rows.Add(new object[]{"3", "1-1"});
// リレーションシップを設定します
myDataSet.Relations.Add("階層1", fpParent.Columns["id1"], fpChild1.Columns["id2"]);
myDataSet.Relations.Add("階層2", fpChild1.Columns["id3"], fpChild2.Columns["id4"]);
}
void InitSpread()
{
// シートの階層表示を行います
FpSpread1.HierarchicalView = true;
FpSpread1.ActiveSheetView.DataSource = myDataSet;
FpSpread1.ActiveSheetView.DataMember = "親";
// ID列は非表示に設定します
FpSpread1.ActiveSheetView.Columns[2].Visible = false;
// 親階層2列目の子階層・孫階層を展開して表示します
int i;
FpSpread1.ActiveSheetView.ExpandRow(1, true);
for (i = 0; i <= FpSpread1.ActiveSheetView.RowCount - 1; i++)
{
// 子階層のSheetViewオブジェクト
FarPoint.Web.Spread.SheetView cv1 = FpSpread1.ActiveSheetView.GetChildView(1, 0);
cv1.ExpandRow(i, true);
}
// SPREADコントロールのサイズの設定
FpSpread1.Height = Unit.Pixel(450);
FpSpread1.Width = Unit.Pixel(350);
}
private void FpSpread1_ChildViewCreated(object sender, FarPoint.Web.Spread.CreateChildViewEventArgs e)
{
if (e.SheetView.RelationName == "階層1")
{
// ID列は非表示に設定します
e.SheetView.Columns[2].Visible = false;
e.SheetView.Columns[3].Visible = false;
e.SheetView.Columns[0].Width = 150;
}
else if (e.SheetView.RelationName == "階層2")
{
// ID列は非表示に設定します
e.SheetView.Columns[1].Visible = false;
}
}
private void Button1_Click(object sender, System.EventArgs e)
{
// クライアント側の変更の確定します
FpSpread1.SaveChanges();
// 親階層のSheetViewオブジェクト
FarPoint.Web.Spread.SheetView sv = FpSpread1.ActiveSheetView;
int i;
int j;
// 子階層のSheetViewオブジェクト
FarPoint.Web.Spread.SheetView cv1;
for (i = 0; i <= FpSpread1.ActiveSheetView.RowCount - 1; i++)
{
// 各親行に関連する子階層のSheetViewオブジェクトを取得
cv1 = FpSpread1.ActiveSheetView.GetChildView(i, 0);
if (!((cv1.RowCount == 0)))
{
// 孫階層のSheetViewオブジェクト
FarPoint.Web.Spread.SheetView cv2;
for (j = 0; j <= cv1.RowCount - 1; j++)
{
// 各子行に関連する孫階層のSheetViewオブジェクトを取得
cv2 = cv1.GetChildView(j, 0);
if (!((cv1.RowCount == 0)))
{
// 孫階層のA1セルの設定
cv2.Cells[0, 0].Value = "Sold Out!";
cv2.Cells[0, 0].BackColor = Color.Red;
}
}
}
}
}
private void Page_Load(object sender, System.EventArgs e)
{
if (Page.IsPostBack)
{
}
else
{
// サンプルで使用するデータを作成します
InitData();
// Spreadの設定を行います
InitSpread();
}
}
void InitData()
{
DataTable fpParent;
DataTable fpChild1;
DataTable fpChild2;
fpParent = myDataSet.Tables.Add("親");
fpParent.Columns.AddRange(new DataColumn[]{new DataColumn("製品分類", Type.GetType("System.String")), new DataColumn("原産国", Type.GetType("System.String")), new DataColumn("id1", Type.GetType("System.Int32"))});
fpParent.Rows.Add(new object[]{"お酒", "日本", 0});
fpParent.Rows.Add(new object[]{"ソフトドリンク", "日本", 1});
fpChild1 = myDataSet.Tables.Add("子");
fpChild1.Columns.AddRange(new DataColumn[]{new DataColumn("製品名", Type.GetType("System.String")), new DataColumn("原産地", Type.GetType("System.String")), new DataColumn("id2", Type.GetType("System.Int32")), new DataColumn("id3", Type.GetType("System.String"))});
// 最初の行を追加します
fpChild1.Rows.Add(new object[]{"吟醸 ほめごろし", "静岡", 0, "0-0"});
fpChild1.Rows.Add(new object[]{"麦焼酎 ちこちこ", "大分", 0, "0-1"});
// 2番目の行を追加します
fpChild1.Rows.Add(new object[]{"いよかんドリンク", "愛媛", 1, "1-0"});
fpChild1.Rows.Add(new object[]{"ずんだミルク", "宮城", 1, "1-1"});
fpChild2 = myDataSet.Tables.Add("孫");
fpChild2.Columns.AddRange(new DataColumn[]{new DataColumn("在庫", Type.GetType("System.String")), new DataColumn("id4", Type.GetType("System.String"))});
// 最初の行を追加します
fpChild2.Rows.Add(new object[]{"100", "0-0"});
fpChild2.Rows.Add(new object[]{"50", "0-1"});
// 2番目の行を追加します
fpChild2.Rows.Add(new object[]{"250", "1-0"});
fpChild2.Rows.Add(new object[]{"3", "1-1"});
// リレーションシップを設定します
myDataSet.Relations.Add("階層1", fpParent.Columns["id1"], fpChild1.Columns["id2"]);
myDataSet.Relations.Add("階層2", fpChild1.Columns["id3"], fpChild2.Columns["id4"]);
}
void InitSpread()
{
// シートの階層表示を行います
FpSpread1.HierarchicalView = true;
FpSpread1.ActiveSheetView.DataSource = myDataSet;
FpSpread1.ActiveSheetView.DataMember = "親";
// ID列は非表示に設定します
FpSpread1.ActiveSheetView.Columns[2].Visible = false;
// 親階層2列目の子階層・孫階層を展開して表示します
int i;
FpSpread1.ActiveSheetView.ExpandRow(1, true);
for (i = 0; i <= FpSpread1.ActiveSheetView.RowCount - 1; i++)
{
// 子階層のSheetViewオブジェクト
FarPoint.Web.Spread.SheetView cv1 = FpSpread1.ActiveSheetView.GetChildView(1, 0);
cv1.ExpandRow(i, true);
}
// SPREADコントロールのサイズの設定
FpSpread1.Height = Unit.Pixel(450);
FpSpread1.Width = Unit.Pixel(350);
}
private void FpSpread1_ChildViewCreated(object sender, FarPoint.Web.Spread.CreateChildViewEventArgs e)
{
if (e.SheetView.RelationName == "階層1")
{
// ID列は非表示に設定します
e.SheetView.Columns[2].Visible = false;
e.SheetView.Columns[3].Visible = false;
e.SheetView.Columns[0].Width = 150;
}
else if (e.SheetView.RelationName == "階層2")
{
// ID列は非表示に設定します
e.SheetView.Columns[1].Visible = false;
}
}
private void Button1_Click(object sender, System.EventArgs e)
{
// クライアント側の変更の確定します
FpSpread1.SaveChanges();
// 親階層のSheetViewオブジェクト
FarPoint.Web.Spread.SheetView sv = FpSpread1.ActiveSheetView;
int i;
int j;
// 子階層のSheetViewオブジェクト
FarPoint.Web.Spread.SheetView cv1;
for (i = 0; i <= FpSpread1.ActiveSheetView.RowCount - 1; i++)
{
// 各親行に関連する子階層のSheetViewオブジェクトを取得
cv1 = FpSpread1.ActiveSheetView.GetChildView(i, 0);
if (!((cv1.RowCount == 0)))
{
// 孫階層のSheetViewオブジェクト
FarPoint.Web.Spread.SheetView cv2;
for (j = 0; j <= cv1.RowCount - 1; j++)
{
// 各子行に関連する孫階層のSheetViewオブジェクトを取得
cv2 = cv1.GetChildView(j, 0);
if (!((cv1.RowCount == 0)))
{
// 孫階層のA1セルの設定
cv2.Cells[0, 0].Value = "Sold Out!";
cv2.Cells[0, 0].BackColor = Color.Red;
}
}
}
}
}
この文書は、以前は次のFAQ IDで公開されていました : 9482