【階層】親階層の列幅が大きい場合、子階層の列ヘッダと行ヘッダの間に隙間が表示されることがある

文書番号 : 23986     文書種別 : 不具合     最終更新日 : 2007/06/22
文書を印刷する
対象製品
SPREAD for .NET 2.5J Web Forms Edition
発生環境
動作保証環境と同様
状況
修正済み
詳細
親階層の列幅が大きい場合、子階層の列ヘッダと行ヘッダの間に隙間が表示されことがあります。

【再現手順】
1.新規WebフォームにSPREADを配置します
2.下記サンプルコードをコピーします
3.アプリケーションを実行します
4.子階層の行ヘッダと列ヘッダの間に隙間が表示されます

【サンプルコード】
-------------------------
Webフォームクラス
-------------------------
  Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    If Page.IsPostBack Then
      Return
    End If
    
    Dim ds As New Data.DataSet()
    Dim fpParent As New Data.DataTable()
    Dim fpChild1 As New Data.DataTable()
    
    fpParent = ds.Tables.Add("SAMPLE")
    
    Dim COLCOUNT As Integer = 3
    Dim datacol As Data.DataColumn() = New Data.DataColumn(COLCOUNT - 1) {}
    Dim rowdata As String() = New String(COLCOUNT - 1) {}
    For i As Integer = 0 To COLCOUNT - 1
    
      datacol(i) = New Data.DataColumn("Column" + Convert.ToString(i + 1), Type.[GetType]("System.String"))
    Next
    fpParent.Columns.AddRange(datacol)
    
    FpSpread1.Sheets(0).Columns(0).Width = 5000
    fpParent.Rows.Add(New Object() {"0", "COL2", "COL3"})
    fpParent.Rows.Add(New Object() {"1", "COL2", "COL3"})
    
    fpChild1 = ds.Tables.Add("Child1")
    fpChild1.Columns.AddRange(New Data.DataColumn() {New Data.DataColumn("Column1", Type.[GetType]("System.String")), New Data.DataColumn("Column2", Type.[GetType]("System.String"))})
    fpChild1.Rows.Add(New Object() {"0", "col2"})
    fpChild1.Rows.Add(New Object() {"1", "col2"})
    
    ds.Relations.Add("Relation1", fpParent.Columns("Column1"), fpChild1.Columns("Column1"))
    
    ' シートの階層表示を行います
    FpSpread1.HierarchicalView = True
    FpSpread1.ActiveSheetView.DataSource = ds
    FpSpread1.ActiveSheetView.DataMember = "Relation1"
    
    FpSpread1.ActiveSheetView.ExpandRow(0, True)
  End Sub
回避方法
2007/09/05版で修正済み。

2007/09/05版より前のバージョンでは次の回避方法が有効です。

Renderメソッドをオーバーライドして子階層のデータ領域のスタイル(width)を変更することで回避できます。

------------------------------------
Webフォームクラス
------------------------------------
  Protected Overrides Sub Render(ByVal writer As HtmlTextWriter)
    Dim i As Integer
    For i = 0 To FpSpread1.ActiveSheetView.RowCount - 1
      Dim fp As FarPoint.Web.Spread.FpSpread = TryCast(FpSpread1.FindControl(i.ToString() + "_0"), FarPoint.Web.Spread.FpSpread)
      If fp IsNot Nothing Then
        Dim td As TableCell = TryCast(fp.FindControl("hidencol3"), TableCell)
        td.Style("width") = "100%"
      End If
    Next
    MyBase.Render(writer)
  End Sub
キーワード
SPRN06128

この文書は、以前は次のバグレポートIDで公開されていました : 7006