【階層】親階層の列幅が大きい場合、子階層の列ヘッダと行ヘッダの間に隙間が表示されることがある
対象製品
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
【再現手順】
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
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