サポート&サービス

Home > サポート&サービス > テクニカルサポート > ナレッジベース

テクニカルサポート

製品に関する技術的なサービスを提供しています。製品別の技術情報(ナレッジベース)および、対応環境情報をご覧いただけます。また、E-mailによるテクニカルサポートのお申し込みもこちらで受け付けています。

ComponentOne サブスクリプション製品をご購入された方

サブスクリプションにて、ComponentOne製品(ComponentOne Studio、Wijmo、Xuni)をご購入された方は、下記のComponentOne Studioサイトからユーザー登録をお願いいたします。

ComponentOne サブスクリプション製品のユーザー登録を行う

ナレッジベース

子階層を持たない親行ヘッダの展開マークを非表示にしたい
文書番号 : 40415     文書種別 : HowTo
登録日 : 2017/06/15     最終更新日 : 2017/06/15
文書を印刷する
対象製品
SPREAD for ASP.NET 10.0J
詳細
リレーショナルデータベースとの連結後に、各親行に関連付けられている子階層の行数を判断し、SheetView クラスのSetRowExpandable メソッドを使用することで実現できます。
以下のサンプルコードでは子階層を持つ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

◎サンプルコード(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);
    }
  }
}

この情報は、疑問・問題解決のお役に立ちましたか?

    


こちらに入力されたご質問には回答できませんので、製品に関するお問い合わせは、別途「E-mailサポート」をご利用ください。


※ 個人情報保護のため、個人情報の記入はご遠慮ください。

このページの先頭へ