階層表示機能を実装している際、子階層を持たない親行ヘッダの展開マークを非表示にしたい
対象製品
SPREAD for Windows Forms 7.0J
詳細
シートのSetRowExpandableメソッドの第2引数をFalseすることで、階層表示の展開マークが表示されません。
また、リレーショナルデータベースとの接続後に、各親行に関連付けられている子階層の行数を判断することができます。以下のサンプルコードでは子階層を持つ1行目および2行目のみ展開マークが表示されます。
◎サンプルコード(VB)
◎サンプルコード(C#)
また、リレーショナルデータベースとの接続後に、各親行に関連付けられている子階層の行数を判断することができます。以下のサンプルコードでは子階層を持つ1行目および2行目のみ展開マークが表示されます。
◎サンプルコード(VB)
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim ds As New DataSet
Dim fpParent As DataTable
Dim fpChild1 As DataTable
fpParent = ds.Tables.Add("SAMPLE")
fpParent.Columns.AddRange(New DataColumn() {New DataColumn("Column1", Type.GetType("System.String")), New DataColumn("Column2", Type.GetType("System.Int32"))})
fpParent.Rows.Add(New Object() {"親1", 0})
fpParent.Rows.Add(New Object() {"親2", 1})
fpParent.Rows.Add(New Object() {"親3", 2})
fpChild1 = ds.Tables.Add("Child1")
fpChild1.Columns.AddRange(New DataColumn() {New DataColumn("Column1", Type.GetType("System.String")), New DataColumn("Column2", Type.GetType("System.Int32"))})
fpChild1.Rows.Add(New Object() {"子1-1", 0})
fpChild1.Rows.Add(New Object() {"子1-2", 0})
fpChild1.Rows.Add(New Object() {"子1-3", 0})
fpChild1.Rows.Add(New Object() {"子2-1", 1})
fpChild1.Rows.Add(New Object() {"子2-2", 1})
fpChild1.Rows.Add(New Object() {"子2-3", 1})
ds.Relations.Add("Relation1", fpParent.Columns("Column2"), fpChild1.Columns("Column2"))
'データベース接続
FpSpread1.ActiveSheet.DataSource = ds
Dim s As FarPoint.Win.Spread.SheetView
For i As Integer = 0 To FpSpread1.ActiveSheet.RowCount - 1
'各親行に関連する子ビューを取得します
s = FpSpread1.ActiveSheet.GetChildView(i, 0)
If s.RowCount = 0 Then
'子ビュー上の行数が0の場合は展開不可とします
FpSpread1.Sheets(0).SetRowExpandable(i, False)
End If
Next
End Sub
Dim ds As New DataSet
Dim fpParent As DataTable
Dim fpChild1 As DataTable
fpParent = ds.Tables.Add("SAMPLE")
fpParent.Columns.AddRange(New DataColumn() {New DataColumn("Column1", Type.GetType("System.String")), New DataColumn("Column2", Type.GetType("System.Int32"))})
fpParent.Rows.Add(New Object() {"親1", 0})
fpParent.Rows.Add(New Object() {"親2", 1})
fpParent.Rows.Add(New Object() {"親3", 2})
fpChild1 = ds.Tables.Add("Child1")
fpChild1.Columns.AddRange(New DataColumn() {New DataColumn("Column1", Type.GetType("System.String")), New DataColumn("Column2", Type.GetType("System.Int32"))})
fpChild1.Rows.Add(New Object() {"子1-1", 0})
fpChild1.Rows.Add(New Object() {"子1-2", 0})
fpChild1.Rows.Add(New Object() {"子1-3", 0})
fpChild1.Rows.Add(New Object() {"子2-1", 1})
fpChild1.Rows.Add(New Object() {"子2-2", 1})
fpChild1.Rows.Add(New Object() {"子2-3", 1})
ds.Relations.Add("Relation1", fpParent.Columns("Column2"), fpChild1.Columns("Column2"))
'データベース接続
FpSpread1.ActiveSheet.DataSource = ds
Dim s As FarPoint.Win.Spread.SheetView
For i As Integer = 0 To FpSpread1.ActiveSheet.RowCount - 1
'各親行に関連する子ビューを取得します
s = FpSpread1.ActiveSheet.GetChildView(i, 0)
If s.RowCount = 0 Then
'子ビュー上の行数が0の場合は展開不可とします
FpSpread1.Sheets(0).SetRowExpandable(i, False)
End If
Next
End Sub
◎サンプルコード(C#)
private void Form1_Load(object sender, EventArgs e)
{
DataSet ds = new DataSet();
DataTable fpParent = new DataTable();
DataTable fpChild1 = new DataTable();
fpParent = ds.Tables.Add("SAMPLE");
fpParent.Columns.AddRange(new DataColumn[] { new DataColumn("Column1", Type.GetType("System.String")), new DataColumn("Column2", Type.GetType("System.Int32")) });
fpParent.Rows.Add(new object[] { "親1", 0 });
fpParent.Rows.Add(new object[] { "親2", 1 });
fpParent.Rows.Add(new object[] { "親3", 2 });
fpChild1 = ds.Tables.Add("Child1");
fpChild1.Columns.AddRange(new DataColumn[] { new DataColumn("Column1", Type.GetType("System.String")), new DataColumn("Column2", Type.GetType("System.Int32")) });
fpChild1.Rows.Add(new object[] { "子1-1", 0 });
fpChild1.Rows.Add(new object[] { "子1-2", 0 });
fpChild1.Rows.Add(new object[] { "子1-3", 0 });
fpChild1.Rows.Add(new object[] { "子2-1", 1 });
fpChild1.Rows.Add(new object[] { "子2-2", 1 });
fpChild1.Rows.Add(new object[] { "子2-3", 1 });
ds.Relations.Add("Relation1", fpParent.Columns["Column2"], fpChild1.Columns["Column2"]);
//データベース接続
fpSpread1.ActiveSheet.DataSource = ds;
FarPoint.Win.Spread.SheetView s;
for (int i = 0; i <= fpSpread1.ActiveSheet.RowCount - 1; i++)
{
//各親行に関連する子ビューを取得します
s = fpSpread1.ActiveSheet.GetChildView(i, 0);
if (s.RowCount == 0)
{
//子ビュー上の行数が0の場合は展開不可とします
fpSpread1.ActiveSheet.SetRowExpandable(i, false);
}
}
}
{
DataSet ds = new DataSet();
DataTable fpParent = new DataTable();
DataTable fpChild1 = new DataTable();
fpParent = ds.Tables.Add("SAMPLE");
fpParent.Columns.AddRange(new DataColumn[] { new DataColumn("Column1", Type.GetType("System.String")), new DataColumn("Column2", Type.GetType("System.Int32")) });
fpParent.Rows.Add(new object[] { "親1", 0 });
fpParent.Rows.Add(new object[] { "親2", 1 });
fpParent.Rows.Add(new object[] { "親3", 2 });
fpChild1 = ds.Tables.Add("Child1");
fpChild1.Columns.AddRange(new DataColumn[] { new DataColumn("Column1", Type.GetType("System.String")), new DataColumn("Column2", Type.GetType("System.Int32")) });
fpChild1.Rows.Add(new object[] { "子1-1", 0 });
fpChild1.Rows.Add(new object[] { "子1-2", 0 });
fpChild1.Rows.Add(new object[] { "子1-3", 0 });
fpChild1.Rows.Add(new object[] { "子2-1", 1 });
fpChild1.Rows.Add(new object[] { "子2-2", 1 });
fpChild1.Rows.Add(new object[] { "子2-3", 1 });
ds.Relations.Add("Relation1", fpParent.Columns["Column2"], fpChild1.Columns["Column2"]);
//データベース接続
fpSpread1.ActiveSheet.DataSource = ds;
FarPoint.Win.Spread.SheetView s;
for (int i = 0; i <= fpSpread1.ActiveSheet.RowCount - 1; i++)
{
//各親行に関連する子ビューを取得します
s = fpSpread1.ActiveSheet.GetChildView(i, 0);
if (s.RowCount == 0)
{
//子ビュー上の行数が0の場合は展開不可とします
fpSpread1.ActiveSheet.SetRowExpandable(i, false);
}
}
}
関連情報
キーワード
「階層」