【階層】コードで階層を展開して表示したい
対象製品
SPREAD for .NET 2.5J Web Forms Edition
詳細
SheetView クラスのExpandRow メソッドにて、階層の展開または折りたたみができます。
また、SheetView クラスのGetChildView メソッドにて子階層のSheetViewを取得することができ、これにより孫階層の展開または折りたたみができます。
◎サンプルコード(VB)
◎サンプルコード(C#)
また、SheetView クラスのGetChildView メソッドにて子階層のSheetViewを取得することができ、これにより孫階層の展開または折りたたみができます。
◎サンプルコード(VB)
Dim myDataSet As New Data.DataSet
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If Page.IsPostBack Then
Return
End If
' サンプルで使用するデータを作成
InitData()
' Spreadの初期設定
InitSpread()
End Sub
Sub InitData()
Dim fpParent As Data.DataTable
Dim fpChild As Data.DataTable
Dim fpgrandchild As Data.DataTable
fpParent = myDataSet.Tables.Add("親")
fpParent.Columns.AddRange(New Data.DataColumn() {New Data.DataColumn("A", Type.GetType("System.String")), New Data.DataColumn("B", Type.GetType("System.String")), New Data.DataColumn("C", Type.GetType("System.String"))})
fpParent.Rows.Add(New Object() {"親A1", "親B1", "0"})
fpParent.Rows.Add(New Object() {"親A2", "親B2", "1"})
fpChild = myDataSet.Tables.Add("子")
fpChild.Columns.AddRange(New Data.DataColumn() {New Data.DataColumn("A", Type.GetType("System.String")), New Data.DataColumn("B", Type.GetType("System.String")), New Data.DataColumn("C", Type.GetType("System.String")), New Data.DataColumn("D", Type.GetType("System.String"))})
fpChild.Rows.Add(New Object() {"子A1-A1", "子A1-B1", "0", "0-0"})
fpChild.Rows.Add(New Object() {"子A1-A2", "子A1-B2", "0", "0-1"})
fpChild.Rows.Add(New Object() {"子A2-A1", "子A2-B1", "1", "1-0"})
fpChild.Rows.Add(New Object() {"子A2-A2", "子A2-B2", "1", "1-1"})
fpgrandchild = myDataSet.Tables.Add("孫")
fpgrandchild.Columns.AddRange(New Data.DataColumn() {New Data.DataColumn("A", Type.GetType("System.String")), New Data.DataColumn("B", Type.GetType("System.String")), New Data.DataColumn("C", Type.GetType("System.String"))})
fpgrandchild.Rows.Add(New Object() {"孫A1-A1-A1", "孫A1-A1-B1", "0-0"})
fpgrandchild.Rows.Add(New Object() {"孫A1-A2-A1", "子A1-A2-B1", "0-1"})
fpgrandchild.Rows.Add(New Object() {"孫A2-A1-A1", "孫A2-A1-B1", "1-0"})
fpgrandchild.Rows.Add(New Object() {"孫A2-A2-A1", "孫A2-A2-B1", "1-1"})
' リレーションシップを設定
myDataSet.Relations.Add("階層1", fpParent.Columns("C"), fpChild.Columns("C"))
myDataSet.Relations.Add("階層2", fpChild.Columns("D"), fpgrandchild.Columns("C"))
End Sub
Sub InitSpread()
Dim i As Integer
Dim j As Integer
' 子階層のSheetViewオブジェクト
Dim cv1 As FarPoint.Web.Spread.SheetView
' シートの階層表示
FpSpread1.HierarchicalView = True
FpSpread1.ActiveSheetView.DataSource = myDataSet
FpSpread1.ActiveSheetView.DataMember = "親"
FpSpread1.ActiveSheetView.Columns(2).Visible = False
For i = 0 To FpSpread1.ActiveSheetView.RowCount - 1
' 階層を展開して表示
FpSpread1.ActiveSheetView.ExpandRow(i, True)
' 各親行に関連する子階層のSheetViewオブジェクトを取得
cv1 = FpSpread1.ActiveSheetView.GetChildView(i, 0)
If Not (cv1.RowCount = 0) Then
For j = 0 To cv1.RowCount - 1
' 階層を展開して表示
cv1.ExpandRow(j, True)
Next
End If
Next
End Sub
Private Sub FpSpread1_ChildViewCreated(ByVal sender As Object, ByVal e As FarPoint.Web.Spread.CreateChildViewEventArgs) Handles FpSpread1.ChildViewCreated
Select Case e.SheetView.RelationName
Case "階層1"
e.SheetView.Columns(2).Visible = False
e.SheetView.Columns(3).Visible = False
Case "階層2"
e.SheetView.Columns(2).Visible = False
End Select
End Sub
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If Page.IsPostBack Then
Return
End If
' サンプルで使用するデータを作成
InitData()
' Spreadの初期設定
InitSpread()
End Sub
Sub InitData()
Dim fpParent As Data.DataTable
Dim fpChild As Data.DataTable
Dim fpgrandchild As Data.DataTable
fpParent = myDataSet.Tables.Add("親")
fpParent.Columns.AddRange(New Data.DataColumn() {New Data.DataColumn("A", Type.GetType("System.String")), New Data.DataColumn("B", Type.GetType("System.String")), New Data.DataColumn("C", Type.GetType("System.String"))})
fpParent.Rows.Add(New Object() {"親A1", "親B1", "0"})
fpParent.Rows.Add(New Object() {"親A2", "親B2", "1"})
fpChild = myDataSet.Tables.Add("子")
fpChild.Columns.AddRange(New Data.DataColumn() {New Data.DataColumn("A", Type.GetType("System.String")), New Data.DataColumn("B", Type.GetType("System.String")), New Data.DataColumn("C", Type.GetType("System.String")), New Data.DataColumn("D", Type.GetType("System.String"))})
fpChild.Rows.Add(New Object() {"子A1-A1", "子A1-B1", "0", "0-0"})
fpChild.Rows.Add(New Object() {"子A1-A2", "子A1-B2", "0", "0-1"})
fpChild.Rows.Add(New Object() {"子A2-A1", "子A2-B1", "1", "1-0"})
fpChild.Rows.Add(New Object() {"子A2-A2", "子A2-B2", "1", "1-1"})
fpgrandchild = myDataSet.Tables.Add("孫")
fpgrandchild.Columns.AddRange(New Data.DataColumn() {New Data.DataColumn("A", Type.GetType("System.String")), New Data.DataColumn("B", Type.GetType("System.String")), New Data.DataColumn("C", Type.GetType("System.String"))})
fpgrandchild.Rows.Add(New Object() {"孫A1-A1-A1", "孫A1-A1-B1", "0-0"})
fpgrandchild.Rows.Add(New Object() {"孫A1-A2-A1", "子A1-A2-B1", "0-1"})
fpgrandchild.Rows.Add(New Object() {"孫A2-A1-A1", "孫A2-A1-B1", "1-0"})
fpgrandchild.Rows.Add(New Object() {"孫A2-A2-A1", "孫A2-A2-B1", "1-1"})
' リレーションシップを設定
myDataSet.Relations.Add("階層1", fpParent.Columns("C"), fpChild.Columns("C"))
myDataSet.Relations.Add("階層2", fpChild.Columns("D"), fpgrandchild.Columns("C"))
End Sub
Sub InitSpread()
Dim i As Integer
Dim j As Integer
' 子階層のSheetViewオブジェクト
Dim cv1 As FarPoint.Web.Spread.SheetView
' シートの階層表示
FpSpread1.HierarchicalView = True
FpSpread1.ActiveSheetView.DataSource = myDataSet
FpSpread1.ActiveSheetView.DataMember = "親"
FpSpread1.ActiveSheetView.Columns(2).Visible = False
For i = 0 To FpSpread1.ActiveSheetView.RowCount - 1
' 階層を展開して表示
FpSpread1.ActiveSheetView.ExpandRow(i, True)
' 各親行に関連する子階層のSheetViewオブジェクトを取得
cv1 = FpSpread1.ActiveSheetView.GetChildView(i, 0)
If Not (cv1.RowCount = 0) Then
For j = 0 To cv1.RowCount - 1
' 階層を展開して表示
cv1.ExpandRow(j, True)
Next
End If
Next
End Sub
Private Sub FpSpread1_ChildViewCreated(ByVal sender As Object, ByVal e As FarPoint.Web.Spread.CreateChildViewEventArgs) Handles FpSpread1.ChildViewCreated
Select Case e.SheetView.RelationName
Case "階層1"
e.SheetView.Columns(2).Visible = False
e.SheetView.Columns(3).Visible = False
Case "階層2"
e.SheetView.Columns(2).Visible = False
End Select
End Sub
◎サンプルコード(C#)
System.Data.DataSet myDataSet = new System.Data.DataSet();
protected void Page_Load(object sender, EventArgs e)
{
if (IsPostBack)
{
return;
}
// サンプルで使用するデータを作成
InitData();
// Spreadの初期設定
InitSpread();
}
public void InitData()
{
System.Data.DataTable fpParent;
System.Data.DataTable fpChild;
System.Data.DataTable fpgrandchild;
fpParent = myDataSet.Tables.Add("親");
fpParent.Columns.AddRange(new System.Data.DataColumn[] { new System.Data.DataColumn("A", Type.GetType("System.String")), new System.Data.DataColumn("B", Type.GetType("System.String")), new System.Data.DataColumn("C", Type.GetType("System.String")) });
fpParent.Rows.Add(new object[] { "親A1", "親B1", "0" });
fpParent.Rows.Add(new object[] { "親A2", "親B2", "1" });
fpChild = myDataSet.Tables.Add("子");
fpChild.Columns.AddRange(new System.Data.DataColumn[] { new System.Data.DataColumn("A", Type.GetType("System.String")), new System.Data.DataColumn("B", Type.GetType("System.String")), new System.Data.DataColumn("C", Type.GetType("System.String")), new System.Data.DataColumn("D", Type.GetType("System.String")) });
fpChild.Rows.Add(new object[] { "子A1-A1", "子A1-B1", "0", "0-0" });
fpChild.Rows.Add(new object[] { "子A1-A2", "子A1-B2", "0", "0-1" });
fpChild.Rows.Add(new object[] { "子A2-A1", "子A2-B1", "1", "1-0" });
fpChild.Rows.Add(new object[] { "子A2-A2", "子A2-B2", "1", "1-1" });
fpgrandchild = myDataSet.Tables.Add("孫");
fpgrandchild.Columns.AddRange(new System.Data.DataColumn[] { new System.Data.DataColumn("A", Type.GetType("System.String")), new System.Data.DataColumn("B", Type.GetType("System.String")), new System.Data.DataColumn("C", Type.GetType("System.String")) });
fpgrandchild.Rows.Add(new object[] { "孫A1-A1-A1", "孫A1-A1-B1", "0-0" });
fpgrandchild.Rows.Add(new object[] { "孫A1-A2-A1", "子A1-A2-B1", "0-1" });
fpgrandchild.Rows.Add(new object[] { "孫A2-A1-A1", "孫A2-A1-B1", "1-0" });
fpgrandchild.Rows.Add(new object[] { "孫A2-A2-A1", "孫A2-A2-B1", "1-1" });
// リレーションシップを設定
myDataSet.Relations.Add("階層1", fpParent.Columns["C"], fpChild.Columns["C"]);
myDataSet.Relations.Add("階層2", fpChild.Columns["D"], fpgrandchild.Columns["C"]);
}
public void InitSpread()
{
int i;
int j;
// 子階層のSheetViewオブジェクト
FarPoint.Web.Spread.SheetView cv1;
// シートの階層表示
FpSpread1.HierarchicalView = true;
FpSpread1.ActiveSheetView.DataSource = myDataSet;
FpSpread1.ActiveSheetView.DataMember = "親";
FpSpread1.ActiveSheetView.Columns[2].Visible = false;
for (i = 0; i <= FpSpread1.ActiveSheetView.RowCount - 1; i++)
{
// 階層を展開して表示
FpSpread1.ActiveSheetView.ExpandRow(i, true);
// 各親行に関連する子階層のSheetViewオブジェクトを取得
cv1 = FpSpread1.ActiveSheetView.GetChildView(i, 0);
if (!(cv1.RowCount == 0))
{
for (j = 0; j <= cv1.RowCount - 1; j++)
{
// 階層を展開して表示
cv1.ExpandRow(j, true);
}
}
}
}
protected void FpSpread1_ChildViewCreated(object sender, FarPoint.Web.Spread.CreateChildViewEventArgs e)
{
switch (e.SheetView.RelationName)
{
case "階層1":
e.SheetView.Columns[2].Visible = false;
e.SheetView.Columns[3].Visible = false;
break;
case "階層2":
e.SheetView.Columns[2].Visible = false;
break;
}
}
protected void Page_Load(object sender, EventArgs e)
{
if (IsPostBack)
{
return;
}
// サンプルで使用するデータを作成
InitData();
// Spreadの初期設定
InitSpread();
}
public void InitData()
{
System.Data.DataTable fpParent;
System.Data.DataTable fpChild;
System.Data.DataTable fpgrandchild;
fpParent = myDataSet.Tables.Add("親");
fpParent.Columns.AddRange(new System.Data.DataColumn[] { new System.Data.DataColumn("A", Type.GetType("System.String")), new System.Data.DataColumn("B", Type.GetType("System.String")), new System.Data.DataColumn("C", Type.GetType("System.String")) });
fpParent.Rows.Add(new object[] { "親A1", "親B1", "0" });
fpParent.Rows.Add(new object[] { "親A2", "親B2", "1" });
fpChild = myDataSet.Tables.Add("子");
fpChild.Columns.AddRange(new System.Data.DataColumn[] { new System.Data.DataColumn("A", Type.GetType("System.String")), new System.Data.DataColumn("B", Type.GetType("System.String")), new System.Data.DataColumn("C", Type.GetType("System.String")), new System.Data.DataColumn("D", Type.GetType("System.String")) });
fpChild.Rows.Add(new object[] { "子A1-A1", "子A1-B1", "0", "0-0" });
fpChild.Rows.Add(new object[] { "子A1-A2", "子A1-B2", "0", "0-1" });
fpChild.Rows.Add(new object[] { "子A2-A1", "子A2-B1", "1", "1-0" });
fpChild.Rows.Add(new object[] { "子A2-A2", "子A2-B2", "1", "1-1" });
fpgrandchild = myDataSet.Tables.Add("孫");
fpgrandchild.Columns.AddRange(new System.Data.DataColumn[] { new System.Data.DataColumn("A", Type.GetType("System.String")), new System.Data.DataColumn("B", Type.GetType("System.String")), new System.Data.DataColumn("C", Type.GetType("System.String")) });
fpgrandchild.Rows.Add(new object[] { "孫A1-A1-A1", "孫A1-A1-B1", "0-0" });
fpgrandchild.Rows.Add(new object[] { "孫A1-A2-A1", "子A1-A2-B1", "0-1" });
fpgrandchild.Rows.Add(new object[] { "孫A2-A1-A1", "孫A2-A1-B1", "1-0" });
fpgrandchild.Rows.Add(new object[] { "孫A2-A2-A1", "孫A2-A2-B1", "1-1" });
// リレーションシップを設定
myDataSet.Relations.Add("階層1", fpParent.Columns["C"], fpChild.Columns["C"]);
myDataSet.Relations.Add("階層2", fpChild.Columns["D"], fpgrandchild.Columns["C"]);
}
public void InitSpread()
{
int i;
int j;
// 子階層のSheetViewオブジェクト
FarPoint.Web.Spread.SheetView cv1;
// シートの階層表示
FpSpread1.HierarchicalView = true;
FpSpread1.ActiveSheetView.DataSource = myDataSet;
FpSpread1.ActiveSheetView.DataMember = "親";
FpSpread1.ActiveSheetView.Columns[2].Visible = false;
for (i = 0; i <= FpSpread1.ActiveSheetView.RowCount - 1; i++)
{
// 階層を展開して表示
FpSpread1.ActiveSheetView.ExpandRow(i, true);
// 各親行に関連する子階層のSheetViewオブジェクトを取得
cv1 = FpSpread1.ActiveSheetView.GetChildView(i, 0);
if (!(cv1.RowCount == 0))
{
for (j = 0; j <= cv1.RowCount - 1; j++)
{
// 階層を展開して表示
cv1.ExpandRow(j, true);
}
}
}
}
protected void FpSpread1_ChildViewCreated(object sender, FarPoint.Web.Spread.CreateChildViewEventArgs e)
{
switch (e.SheetView.RelationName)
{
case "階層1":
e.SheetView.Columns[2].Visible = false;
e.SheetView.Columns[3].Visible = false;
break;
case "階層2":
e.SheetView.Columns[2].Visible = false;
break;
}
}
キーワード
データ連結
この文書は、以前は次のFAQ IDで公開されていました : 11344