作成日: 2017/06/15 最終更新日: 2017/06/15
文書種別
使用方法
詳細
リレーショナルデータベースとの連結後に、各親行に関連付けられている子階層の行数を判断し、SheetView クラスのSetRowExpandable メソッドを使用することで実現できます。
以下のサンプルコードでは子階層を持つ1行目のみ展開マークが表示されます。
◎サンプルコード(VB)
◎サンプルコード(C#)
以下のサンプルコードでは子階層を持つ1行目のみ展開マークが表示されます。
◎サンプルコード(VB)
Dim myDataSet As New Data.DataSet
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If IsPostBack Then
Return
End If
' サンプルで使用するデータを作成します
InitData()
' Spreadの設定を行います
InitSpread()
End Sub
Sub InitData()
Dim fpParent As Data.DataTable
Dim fpChild1 As Data.DataTable
fpParent = myDataSet.Tables.Add("親")
fpParent.Columns.AddRange(New Data.DataColumn() {New Data.DataColumn("製品分類", Type.GetType("System.String")), New Data.DataColumn("原産国", Type.GetType("System.String")), New Data.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 Data.DataColumn() {New Data.DataColumn("製品名", Type.GetType("System.String")), New Data.DataColumn("原産地", Type.GetType("System.String")), New Data.DataColumn("id2", Type.GetType("System.Int32"))})
' 最初の行を追加します
fpChild1.Rows.Add(New Object() {"吟醸 ほめごろし", "静岡", 0})
fpChild1.Rows.Add(New Object() {"麦焼酎 ちこちこ", "大分", 0})
' リレーションシップを設定します
myDataSet.Relations.Add("階層1", fpParent.Columns("id1"), fpChild1.Columns("id2"))
End Sub
Sub InitSpread()
' シートの階層表示を行います
FpSpread1.HierarchicalView = True
FpSpread1.ActiveSheetView.DataSource = myDataSet
FpSpread1.ActiveSheetView.DataMember = "親"
' ID列は非表示に設定します
FpSpread1.ActiveSheetView.Columns(2).Visible = False
Dim s As FarPoint.Web.Spread.SheetView
For i As Integer = 0 To FpSpread1.ActiveSheetView.RowCount - 1
'各親行に関連する子ビューを取得します
s = FpSpread1.ActiveSheetView.GetChildView(i, 0)
If s.RowCount = 0 Then
'子ビュー上の行数が0の場合は展開不可とします
FpSpread1.ActiveSheetView.SetRowExpandable(i, False)
End If
Next
End Sub
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If IsPostBack Then
Return
End If
' サンプルで使用するデータを作成します
InitData()
' Spreadの設定を行います
InitSpread()
End Sub
Sub InitData()
Dim fpParent As Data.DataTable
Dim fpChild1 As Data.DataTable
fpParent = myDataSet.Tables.Add("親")
fpParent.Columns.AddRange(New Data.DataColumn() {New Data.DataColumn("製品分類", Type.GetType("System.String")), New Data.DataColumn("原産国", Type.GetType("System.String")), New Data.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 Data.DataColumn() {New Data.DataColumn("製品名", Type.GetType("System.String")), New Data.DataColumn("原産地", Type.GetType("System.String")), New Data.DataColumn("id2", Type.GetType("System.Int32"))})
' 最初の行を追加します
fpChild1.Rows.Add(New Object() {"吟醸 ほめごろし", "静岡", 0})
fpChild1.Rows.Add(New Object() {"麦焼酎 ちこちこ", "大分", 0})
' リレーションシップを設定します
myDataSet.Relations.Add("階層1", fpParent.Columns("id1"), fpChild1.Columns("id2"))
End Sub
Sub InitSpread()
' シートの階層表示を行います
FpSpread1.HierarchicalView = True
FpSpread1.ActiveSheetView.DataSource = myDataSet
FpSpread1.ActiveSheetView.DataMember = "親"
' ID列は非表示に設定します
FpSpread1.ActiveSheetView.Columns(2).Visible = False
Dim s As FarPoint.Web.Spread.SheetView
For i As Integer = 0 To FpSpread1.ActiveSheetView.RowCount - 1
'各親行に関連する子ビューを取得します
s = FpSpread1.ActiveSheetView.GetChildView(i, 0)
If s.RowCount = 0 Then
'子ビュー上の行数が0の場合は展開不可とします
FpSpread1.ActiveSheetView.SetRowExpandable(i, False)
End If
Next
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();
}
void InitData()
{
System.Data.DataTable fpParent;
System.Data.DataTable fpChild1;
fpParent = myDataSet.Tables.Add("親");
fpParent.Columns.AddRange(new System.Data.DataColumn[] { new System.Data.DataColumn("製品分類", Type.GetType("System.String")), new System.Data.DataColumn("原産国", Type.GetType("System.String")), new System.Data.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 System.Data.DataColumn[] { new System.Data.DataColumn("製品名", Type.GetType("System.String")), new System.Data.DataColumn("原産地", Type.GetType("System.String")), new System.Data.DataColumn("id2", Type.GetType("System.Int32")) });
// 最初の行を追加します
fpChild1.Rows.Add(new object[] { "吟醸 ほめごろし", "静岡", 0 });
fpChild1.Rows.Add(new object[] { "麦焼酎 ちこちこ", "大分", 0 });
// リレーションシップを設定します
myDataSet.Relations.Add("階層1", fpParent.Columns["id1"], fpChild1.Columns["id2"]);
}
void InitSpread()
{
// シートの階層表示を行います
FpSpread1.HierarchicalView = true;
FpSpread1.ActiveSheetView.DataSource = myDataSet;
FpSpread1.ActiveSheetView.DataMember = "親";
// ID列は非表示に設定します
FpSpread1.ActiveSheetView.Columns[2].Visible = false;
FarPoint.Web.Spread.SheetView s;
for (int i = 0; i <= FpSpread1.ActiveSheetView.RowCount - 1; i++)
{
//各親行に関連する子ビューを取得します
s = FpSpread1.ActiveSheetView.GetChildView(i, 0);
if (s.RowCount == 0)
{
//子ビュー上の行数が0の場合は展開不可とします
FpSpread1.ActiveSheetView.SetRowExpandable(i, false);
}
}
}
protected void Page_Load(object sender, EventArgs e)
{
if (IsPostBack)
{
return;
}
// サンプルで使用するデータを作成します
InitData();
// Spreadの設定を行います
InitSpread();
}
void InitData()
{
System.Data.DataTable fpParent;
System.Data.DataTable fpChild1;
fpParent = myDataSet.Tables.Add("親");
fpParent.Columns.AddRange(new System.Data.DataColumn[] { new System.Data.DataColumn("製品分類", Type.GetType("System.String")), new System.Data.DataColumn("原産国", Type.GetType("System.String")), new System.Data.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 System.Data.DataColumn[] { new System.Data.DataColumn("製品名", Type.GetType("System.String")), new System.Data.DataColumn("原産地", Type.GetType("System.String")), new System.Data.DataColumn("id2", Type.GetType("System.Int32")) });
// 最初の行を追加します
fpChild1.Rows.Add(new object[] { "吟醸 ほめごろし", "静岡", 0 });
fpChild1.Rows.Add(new object[] { "麦焼酎 ちこちこ", "大分", 0 });
// リレーションシップを設定します
myDataSet.Relations.Add("階層1", fpParent.Columns["id1"], fpChild1.Columns["id2"]);
}
void InitSpread()
{
// シートの階層表示を行います
FpSpread1.HierarchicalView = true;
FpSpread1.ActiveSheetView.DataSource = myDataSet;
FpSpread1.ActiveSheetView.DataMember = "親";
// ID列は非表示に設定します
FpSpread1.ActiveSheetView.Columns[2].Visible = false;
FarPoint.Web.Spread.SheetView s;
for (int i = 0; i <= FpSpread1.ActiveSheetView.RowCount - 1; i++)
{
//各親行に関連する子ビューを取得します
s = FpSpread1.ActiveSheetView.GetChildView(i, 0);
if (s.RowCount == 0)
{
//子ビュー上の行数が0の場合は展開不可とします
FpSpread1.ActiveSheetView.SetRowExpandable(i, false);
}
}
}
旧文書番号
40415