【連結】 データ連結時に行の挿入を行うと、新規の行ではなくカレント行の書式がコピーされた行が挿入される
対象製品
SPREAD for ASP.NET 7.0J
状況
修正済み
詳細
データ連結時に行の挿入を行うと、新規の行ではなくカレント行の書式がコピーされた行が挿入されます。
【再現コード】
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If IsPostBack Then Return
' SPREADの初期設定
FpSpread1.ActiveSheetView.AllowDelete = True
FpSpread1.ActiveSheetView.AllowInsert = True
FpSpread1.ActiveSheetView.Rows(2).Locked = True
FpSpread1.ActiveSheetView.LockBackColor = System.Drawing.Color.LavenderBlush
' データ連結
Dim tbl As New Data.DataTable()
tbl.Columns.Add("A", Type.[GetType]("System.String"))
tbl.Columns.Add("B", Type.[GetType]("System.String"))
tbl.Columns.Add("C", Type.[GetType]("System.String"))
For i As Integer = 0 To 2
Dim row As Data.DataRow = tbl.NewRow()
row("A") = "B1"
row("B") = "B2"
row("C") = "B3"
tbl.Rows.Add(row)
Next
FpSpread1.DataSource = tbl
FpSpread1.DataBind()
End Sub
【再現手順】
1.プロジェクトを起動します
2.3行目を選択しコマンドバーを使い行を挿入します
3.追加された空の行をダブルクリックします
-- 編集を開始できません(選択行の書式がコピーされています)
【再現コード】
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If IsPostBack Then Return
' SPREADの初期設定
FpSpread1.ActiveSheetView.AllowDelete = True
FpSpread1.ActiveSheetView.AllowInsert = True
FpSpread1.ActiveSheetView.Rows(2).Locked = True
FpSpread1.ActiveSheetView.LockBackColor = System.Drawing.Color.LavenderBlush
' データ連結
Dim tbl As New Data.DataTable()
tbl.Columns.Add("A", Type.[GetType]("System.String"))
tbl.Columns.Add("B", Type.[GetType]("System.String"))
tbl.Columns.Add("C", Type.[GetType]("System.String"))
For i As Integer = 0 To 2
Dim row As Data.DataRow = tbl.NewRow()
row("A") = "B1"
row("B") = "B2"
row("C") = "B3"
tbl.Rows.Add(row)
Next
FpSpread1.DataSource = tbl
FpSpread1.DataBind()
End Sub
【再現手順】
1.プロジェクトを起動します
2.3行目を選択しコマンドバーを使い行を挿入します
3.追加された空の行をダブルクリックします
-- 編集を開始できません(選択行の書式がコピーされています)
回避方法
Service Pack 3(v7.0.4017.2010)で修正済み。
Service Pack 3(v7.0.4017.2010)より前のバージョンでは次の回避方法が有効です。
------------------------------------------
クライアントスクリプトを用いて行の挿入を行い、スタイルを再設定します。
------------------------------------
Webフォームクラス
------------------------------------
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If IsPostBack Then Return
' SPREADの初期設定
FpSpread1.AllowClientUnlock = True
FpSpread1.ActiveSheetView.AllowDelete = True
FpSpread1.ActiveSheetView.AllowInsert = True
FpSpread1.ActiveSheetView.Rows(2).Locked = True
FpSpread1.ActiveSheetView.LockBackColor = System.Drawing.Color.LavenderBlush
' データ連結
Dim tbl As New Data.DataTable()
tbl.Columns.Add("A", Type.[GetType]("System.String"))
tbl.Columns.Add("B", Type.[GetType]("System.String"))
tbl.Columns.Add("C", Type.[GetType]("System.String"))
For i As Integer = 0 To 2
Dim row As Data.DataRow = tbl.NewRow()
row("A") = "B1"
row("B") = "B2"
row("C") = "B3"
tbl.Rows.Add(row)
Next
FpSpread1.DataSource = tbl
FpSpread1.DataBind()
End Sub
Protected Overrides Sub Render(writer As System.Web.UI.HtmlTextWriter)
Dim con As Control = FpSpread1.FindControl("Insert")
TryCast(con, Image).Attributes("onclick") = "test();"
MyBase.Render(writer)
End Sub
------------------------------------
クライアント側スクリプト
------------------------------------
function test() {
var spread = document.getElementById("FpSpread1");
var row = spread.GetActiveRow();
var cols = spread.GetColCount();
spread.Insert();
for (var i = 0; i < cols; i++) {
spread.Cells(row, i).SetBackColor("white");
spread.Cells(row, i).SetForeColor("black");
spread.Cells(row, i).SetLocked(false);
}
}
Service Pack 3(v7.0.4017.2010)より前のバージョンでは次の回避方法が有効です。
------------------------------------------
クライアントスクリプトを用いて行の挿入を行い、スタイルを再設定します。
------------------------------------
Webフォームクラス
------------------------------------
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If IsPostBack Then Return
' SPREADの初期設定
FpSpread1.AllowClientUnlock = True
FpSpread1.ActiveSheetView.AllowDelete = True
FpSpread1.ActiveSheetView.AllowInsert = True
FpSpread1.ActiveSheetView.Rows(2).Locked = True
FpSpread1.ActiveSheetView.LockBackColor = System.Drawing.Color.LavenderBlush
' データ連結
Dim tbl As New Data.DataTable()
tbl.Columns.Add("A", Type.[GetType]("System.String"))
tbl.Columns.Add("B", Type.[GetType]("System.String"))
tbl.Columns.Add("C", Type.[GetType]("System.String"))
For i As Integer = 0 To 2
Dim row As Data.DataRow = tbl.NewRow()
row("A") = "B1"
row("B") = "B2"
row("C") = "B3"
tbl.Rows.Add(row)
Next
FpSpread1.DataSource = tbl
FpSpread1.DataBind()
End Sub
Protected Overrides Sub Render(writer As System.Web.UI.HtmlTextWriter)
Dim con As Control = FpSpread1.FindControl("Insert")
TryCast(con, Image).Attributes("onclick") = "test();"
MyBase.Render(writer)
End Sub
------------------------------------
クライアント側スクリプト
------------------------------------
function test() {
var spread = document.getElementById("FpSpread1");
var row = spread.GetActiveRow();
var cols = spread.GetColCount();
spread.Insert();
for (var i = 0; i < cols; i++) {
spread.Cells(row, i).SetBackColor("white");
spread.Cells(row, i).SetForeColor("black");
spread.Cells(row, i).SetLocked(false);
}
}