PowerTools SPREAD for ASP.NET 8.0J
1レコード複数行表示

行テンプレートを使用すると、1レコードに複数行を表示することができます。この形式では、1つの列内に複数行のデータを表示することが可能になります。また、列ヘッダテンプレートを使用して、列ヘッダのレイアウトもカスタマイズできます。

列ヘッダテンプレートと行テンプレートはワークシートテンプレートに含まれます。 連結セル、列数、行数などのレイアウト情報も、ワークシートテンプレートに保存されます。

次の図は、複数の情報フィールドから成る1つの列を使用した例です。この図では、「氏名」列に、氏名(漢字)とフリガナが1つの列内に交互に表示され、また「生年月日/性別/血液型」と「連絡先」列でも、1つの列に複数行が表示されています。

行テンプレート(1レコード複数行表示)の例

なお、この機能は次のような注意点があります。

設定方法

行テンプレートを有効にするには、SheetView クラスLayoutMode プロパティSheetView.LayoutModeType.RowTemplateLayoutModeに設定します。次に、WorksheetTemplate プロパティが参照するテンプレートオブジェクトにレイアウトを定義します。

テンプレートオブジェクトは、WorksheetTemplate クラスを使用して生成します。列ヘッダテンプレートと行テンプレートは、LayoutTemplate クラス を使用してレイアウトを作成し、それぞれWorksheetTemplate クラスのColumnHeaderTemplate プロパティ、およびRowTemplate プロパティに設定します。

データソースのどのフィールドに連結するかは、WorksheetLayoutCell クラスDataIndex プロパティにフィールドのインデックスを指定します。WorksheetLeyoutCell クラスは、WorksheetTemplate クラスのLayoutCells プロパティが参照するコレクションに追加されます。

サンプルコード

次のサンプルコードは、下図のような1レコード複数行表示を実装します。

 

protected void Page_Load(object sender, System.EventArgs e)
{
    if (this.IsPostBack) return;
    
    // 行テンプレートモードを有効にします。
    FpSpread1.ActiveSheetView.LayoutMode = FarPoint.Web.Spread.SheetView.LayoutModeType.RowTemplateLayoutMode;
    
    // ワークシートテンプレートを作成します。
    FarPoint.Web.Spread.WorksheetTemplate template1 = FpSpread1.Sheets[0].WorksheetTemplate;
    template1.ColumnCount = 3;
    template1.ColumnHeaderTemplate.RowCount = 2;
    template1.RowTemplate.RowCount = 2;
    template1.LayoutColumns[1].Width = 250;
    // 行テンプレートのレイアウトを設定します。
    template1.RowTemplate.LayoutCells[1, 1].ColumnSpan = 2;
    // 列ヘッダテンプレートのレイアウトを設定します。
    template1.ColumnHeaderTemplate.LayoutCells[0, 0].RowSpan = 2;
    template1.ColumnHeaderTemplate.LayoutCells[1, 1].ColumnSpan = 2;
 
    // データソースを作成します。
    DataTable dt = new DataTable();
    dt.Columns.Add("ProductID");
    dt.Columns.Add("ProductName");
    dt.Columns.Add("Region");
    dt.Columns.Add("Date");
    dt.Columns.Add("Description");
    dt.Rows.Add(new object[] { 21, "Computer", "China", "2010/1/1", "Using newest display adapter" });
    dt.Rows.Add(new object[] { 36, "Notebook", "Vietnam", "2010/6/1", "Dell" });
    dt.Rows.Add(new object[] { 13, "Hard disk", "Taiwan", "2011/1/1", "Speed is 7200" });
    FpSpread1.Sheets[0].DataSource = dt;
 
    // 行テンプレートのセルにデータフィールドを連結します。
    template1.LayoutCells[0, 0].DataIndex = 0;
    template1.LayoutCells[1, 0].DataIndex = 1;
    template1.LayoutCells[0, 1].DataIndex = 2;
    template1.LayoutCells[0, 2].DataIndex = 3;
    template1.LayoutCells[1, 1].DataIndex = 4;
}
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    If (IsPostBack) Then
        Return
    End If
    
    ' 行テンプレートモードを有効にします。
    FpSpread1.ActiveSheetView.LayoutMode = FarPoint.Web.Spread.SheetView.LayoutModeType.RowTemplateLayoutMode
    
    ' ワークシートテンプレートを作成します。
    Dim template1 As FarPoint.Web.Spread.WorksheetTemplate = FpSpread1.Sheet(0).WorksheetTemplate
    template1.ColumnCount = 3
    template1.ColumnHeaderTemplate.RowCount = 2
    template1.RowTemplate.RowCount = 2
    template1.LayoutColumns(1).Width = 250
    ' 行テンプレートのレイアウトを設定します。
    template1.RowTemplate.LayoutCells(1, 1).ColumnSpan = 2
    ' 列ヘッダテンプレートのレイアウトを設定します。
    template1.ColumnHeaderTemplate.LayoutCells(0, 0).RowSpan = 2
    template1.ColumnHeaderTemplate.LayoutCells(1, 1).ColumnSpan = 2
 
    ' データソースを作成します。
    Dim dt As New DataTable()
    dt.Columns.Add("ProductID")
    dt.Columns.Add("ProductName")
    dt.Columns.Add("Region")
    dt.Columns.Add("Date")
    dt.Columns.Add("Description")
    dt.Rows.Add(New Object() {21, "Computer", "China", "2010/1/1", "Using newest display adapter"})
    dt.Rows.Add(New Object() {36, "Notebook", "Vietnam", "2010/6/1", "Dell"})
    dt.Rows.Add(New Object() {13, "Hard disk", "Taiwan", "2011/1/1", "Speed is 7200"})
    FpSpread1.Sheets(0).DataSource = dt
 
    ' 行テンプレートのセルにデータフィールドを連結します。
    template1.LayoutCells(0, 0).DataIndex = 0
    template1.LayoutCells(1, 0).DataIndex = 1
    template1.LayoutCells(0, 1).DataIndex = 2
    template1.LayoutCells(0, 2).DataIndex = 3
    template1.LayoutCells(1, 1).DataIndex = 4
End Sub        

SPREADデザイナでの設定

  1. 行テンプレートエディタを起動します。
  2. 「行テンプレート レイアウト モードを有効にする」チェックボックスをオンにします。
  3. 該当するセルを結合し、レイアウトを作成します。
  4. 各セルに連結するデータフィールドを設定します。
  5. 〈適用〉、〈OK〉ボタンをクリックします。
関連トピック

 

 


© 2003-2015, GrapeCity inc. All rights reserved.