【ソート】空の文字列(String.Empty)を含むデータを複数の列でソートすると正しい結果が得られない
対象製品
SPREAD for .NET 2.5J Web Forms Edition
発生環境
動作保証環境と同様
状況
修正済み
詳細
SortInfo 配列を指定して複数の列でソートする際、プライマリ列に空の文字列が設定されていると正しい順序でソートが行われません。
空の文字列ではなくNothingの場合は正しくソートされます。
[再現手順]
1.新規WebフォームにSPREADとButtonを配置します
2.下記コードをコピーします
3.実行し、Buttonをクリックします
4.2列目のソート結果が不正となります
[再現コード]
-------------------------
Webフォームクラス
-------------------------
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If IsPostBack Then Return
Dim dt As New Data.DataTable
dt.Columns.Add(New Data.DataColumn("COL1", GetType(System.String)))
dt.Columns.Add(New Data.DataColumn("COL2", GetType(System.String)))
Dim a As Int32 = 65
For i As Int32 = 0 To 9
dt.Rows.Add(New Object() {"", Chr(a + i).ToString()})
Next
Dim ds As New Data.DataSet
ds.Tables.Add(dt)
FpSpread1.DataSource = ds
End Sub
' ソートの実行(昇順)
Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
' クライアントの変更を確定
FpSpread1.SaveChanges()
Dim si As New FarPoint.Web.Spread.SortInfo(0, True)
Dim si2 As New FarPoint.Web.Spread.SortInfo(1, True)
Dim info() As FarPoint.Web.Spread.SortInfo = New FarPoint.Web.Spread.SortInfo() {si, si2}
FpSpread1.ActiveSheetView.SortRows(0, FpSpread1.ActiveSheetView.RowCount, info)
End Sub
空の文字列ではなくNothingの場合は正しくソートされます。
[再現手順]
1.新規WebフォームにSPREADとButtonを配置します
2.下記コードをコピーします
3.実行し、Buttonをクリックします
4.2列目のソート結果が不正となります
[再現コード]
-------------------------
Webフォームクラス
-------------------------
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If IsPostBack Then Return
Dim dt As New Data.DataTable
dt.Columns.Add(New Data.DataColumn("COL1", GetType(System.String)))
dt.Columns.Add(New Data.DataColumn("COL2", GetType(System.String)))
Dim a As Int32 = 65
For i As Int32 = 0 To 9
dt.Rows.Add(New Object() {"", Chr(a + i).ToString()})
Next
Dim ds As New Data.DataSet
ds.Tables.Add(dt)
FpSpread1.DataSource = ds
End Sub
' ソートの実行(昇順)
Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
' クライアントの変更を確定
FpSpread1.SaveChanges()
Dim si As New FarPoint.Web.Spread.SortInfo(0, True)
Dim si2 As New FarPoint.Web.Spread.SortInfo(1, True)
Dim info() As FarPoint.Web.Spread.SortInfo = New FarPoint.Web.Spread.SortInfo() {si, si2}
FpSpread1.ActiveSheetView.SortRows(0, FpSpread1.ActiveSheetView.RowCount, info)
End Sub
回避方法
2007/09/05版で修正済み。
キーワード
SPRN06081
この文書は、以前は次のバグレポートIDで公開されていました : 6945