子階層シート上で行列固定を設定出来ますか?
対象製品
SPREAD for Windows Forms 7.0J
詳細
はい。階層表示時における子階層シート上で行列固定することが出来ます。子階層シート上で行列固定を設定するには、ChildViewCreatedイベントを実装して各親ビューに関連付けられている子ビューオブジェクトを取得し、この子ビューに対して行う必要があります。
◎サンプルコード(VB)
◎サンプルコード(C#)
◎サンプルコード(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("SampleTable")
fpParent.Columns.AddRange(New DataColumn() { _
New DataColumn("Name", Type.GetType("System.String")), _
New DataColumn("ID", Type.GetType("System.Int32"))})
fpParent.Rows.Add(New Object() {"親データ1", 123})
fpParent.Rows.Add(New Object() {"親データ2", 456})
fpChild1 = ds.Tables.Add("ChildTable")
fpChild1.Columns.AddRange(New DataColumn() { _
New DataColumn("Child-Name", Type.GetType("System.String")), _
New DataColumn("ID", Type.GetType("System.Int32"))})
fpChild1.Rows.Add(New Object() {"子データ1-1", 123})
fpChild1.Rows.Add(New Object() {"子データ1-2", 123})
fpChild1.Rows.Add(New Object() {"子データ2-1", 456})
fpChild1.Rows.Add(New Object() {"子データ2-2", 456})
fpChild1.Rows.Add(New Object() {"子データ2-3", 456})
fpChild1.Rows.Add(New Object() {"子データ2-4", 456})
'テーブル間のリレーションを設定します
ds.Relations.Add("Relation1", fpParent.Columns("ID"), fpChild1.Columns("ID"))
'作成されたデータセットを接続します
FpSpread1.ActiveSheet.DataSource = ds
End Sub
Private Sub FpSpread1_ChildViewCreated(ByVal sender As System.Object, ByVal e As FarPoint.Win.Spread.ChildViewCreatedEventArgs) Handles FpSpread1.ChildViewCreated
'固定列/行を設定します
e.SheetView.FrozenColumnCount = 1
e.SheetView.FrozenRowCount = 1
End Sub
'データセットを作成します
Dim ds As New DataSet
Dim fpParent As DataTable
Dim fpChild1 As DataTable
fpParent = ds.Tables.Add("SampleTable")
fpParent.Columns.AddRange(New DataColumn() { _
New DataColumn("Name", Type.GetType("System.String")), _
New DataColumn("ID", Type.GetType("System.Int32"))})
fpParent.Rows.Add(New Object() {"親データ1", 123})
fpParent.Rows.Add(New Object() {"親データ2", 456})
fpChild1 = ds.Tables.Add("ChildTable")
fpChild1.Columns.AddRange(New DataColumn() { _
New DataColumn("Child-Name", Type.GetType("System.String")), _
New DataColumn("ID", Type.GetType("System.Int32"))})
fpChild1.Rows.Add(New Object() {"子データ1-1", 123})
fpChild1.Rows.Add(New Object() {"子データ1-2", 123})
fpChild1.Rows.Add(New Object() {"子データ2-1", 456})
fpChild1.Rows.Add(New Object() {"子データ2-2", 456})
fpChild1.Rows.Add(New Object() {"子データ2-3", 456})
fpChild1.Rows.Add(New Object() {"子データ2-4", 456})
'テーブル間のリレーションを設定します
ds.Relations.Add("Relation1", fpParent.Columns("ID"), fpChild1.Columns("ID"))
'作成されたデータセットを接続します
FpSpread1.ActiveSheet.DataSource = ds
End Sub
Private Sub FpSpread1_ChildViewCreated(ByVal sender As System.Object, ByVal e As FarPoint.Win.Spread.ChildViewCreatedEventArgs) Handles FpSpread1.ChildViewCreated
'固定列/行を設定します
e.SheetView.FrozenColumnCount = 1
e.SheetView.FrozenRowCount = 1
End Sub
◎サンプルコード(C#)
private void Form1_Load(object sender, EventArgs e)
{
//データセットを手動で作成します
DataSet ds = new DataSet();
DataTable fpParent;
DataTable fpChild1;
fpParent = ds.Tables.Add("SampleTable");
fpParent.Columns.AddRange(new DataColumn[] {
new DataColumn("Name", Type.GetType("System.String")),
new DataColumn("ID", Type.GetType("System.Int32"))});
fpParent.Rows.Add(new object[] { "親データ1", 123 });
fpParent.Rows.Add(new object[] { "親データ2", 456 });
fpChild1 = ds.Tables.Add("ChildTable");
fpChild1.Columns.AddRange(new DataColumn[] {
new DataColumn("Child-Name", Type.GetType("System.String")),
new DataColumn("ID", Type.GetType("System.Int32"))});
fpChild1.Rows.Add(new object[] { "子データ1-1", 123 });
fpChild1.Rows.Add(new object[] { "子データ1-2", 123 });
fpChild1.Rows.Add(new object[] { "子データ2-1", 456 });
fpChild1.Rows.Add(new object[] { "子データ2-2", 456 });
fpChild1.Rows.Add(new object[] { "子データ2-3", 456 });
fpChild1.Rows.Add(new object[] { "子データ2-4", 456 });
//テーブル間のリレーションを設定します
ds.Relations.Add("Relation1", fpParent.Columns["ID"], fpChild1.Columns["ID"]);
//作成されたデータセットを接続します
fpSpread1.ActiveSheet.DataSource = ds;
}
private void fpSpread1_ChildViewCreated(object sender, FarPoint.Win.Spread.ChildViewCreatedEventArgs e)
{
//固定列/行を設定します
e.SheetView.FrozenColumnCount = 1;
e.SheetView.FrozenRowCount = 1;
}
{
//データセットを手動で作成します
DataSet ds = new DataSet();
DataTable fpParent;
DataTable fpChild1;
fpParent = ds.Tables.Add("SampleTable");
fpParent.Columns.AddRange(new DataColumn[] {
new DataColumn("Name", Type.GetType("System.String")),
new DataColumn("ID", Type.GetType("System.Int32"))});
fpParent.Rows.Add(new object[] { "親データ1", 123 });
fpParent.Rows.Add(new object[] { "親データ2", 456 });
fpChild1 = ds.Tables.Add("ChildTable");
fpChild1.Columns.AddRange(new DataColumn[] {
new DataColumn("Child-Name", Type.GetType("System.String")),
new DataColumn("ID", Type.GetType("System.Int32"))});
fpChild1.Rows.Add(new object[] { "子データ1-1", 123 });
fpChild1.Rows.Add(new object[] { "子データ1-2", 123 });
fpChild1.Rows.Add(new object[] { "子データ2-1", 456 });
fpChild1.Rows.Add(new object[] { "子データ2-2", 456 });
fpChild1.Rows.Add(new object[] { "子データ2-3", 456 });
fpChild1.Rows.Add(new object[] { "子データ2-4", 456 });
//テーブル間のリレーションを設定します
ds.Relations.Add("Relation1", fpParent.Columns["ID"], fpChild1.Columns["ID"]);
//作成されたデータセットを接続します
fpSpread1.ActiveSheet.DataSource = ds;
}
private void fpSpread1_ChildViewCreated(object sender, FarPoint.Win.Spread.ChildViewCreatedEventArgs e)
{
//固定列/行を設定します
e.SheetView.FrozenColumnCount = 1;
e.SheetView.FrozenRowCount = 1;
}
関連情報
- 【Tips】任意のタイミングで子階層セル(親階層セル)から親階層セル(子階層セル)にアクティブセルを移動させたい
- 階層表示機能を実装している際、子階層を持たない親行ヘッダの展開マークを非表示にしたい
- 選択した子階層のインデックスを取得する方法
キーワード
「階層」