作成日: 2018/11/21 最終更新日: 2019/04/17
文書種別
不具合
状況
修正済み
詳細
Repeaterコントロール内で使用すると、水平スクロール時にヘッダがスクロールされません(ブラウザによってはスクリプトエラーが発生します。)
回避方法
Service Pack 4(v10.0.4007.2013)で修正済み。
Service Pack 4より前のバージョンでは次の回避方法が有効です。
------------------------------------------
下記のように、ClientIDModeプロパティによりRepeaterコントロール上のIDを設定した上で、製品のコントロール情報に正しくアクセスできるようスクリプトを実装することにより回避できます。
------------------------------------
Webフォームクラス
------------------------------------
string startupScript = string.Empty; // 回避コード1
foreach (RepeaterItem item in Repeater1.Items)
{
FarPoint.Web.Spread.FpSpread spread = new FarPoint.Web.Spread.FpSpread();
FarPoint.Web.Spread.SheetView sheet = new FarPoint.Web.Spread.SheetView();
sheet.ColumnCount = 20;
sheet.RowCount = 10;
sheet.PageSize = 10;
spread.Sheets.Add(sheet);
spread.ActiveSheetView.SetValue(0, 0, string.Format("A{0}", count));
spread.Height = 300;
spread.Width = 500;
item.ClientIDMode = System.Web.UI.ClientIDMode.AutoID; // 回避コード2
item.Controls.Add(spread);
startupScript += string.Format("CorrectIDs('{0}','{1}');", spread.ClientID.ToString(), count) + Environment.NewLine; // 回避コード3
count++;
}
// 回避コード4
if (!string.IsNullOrEmpty(startupScript))
ScriptManager.RegisterStartupScript(this.Page, this.Page.GetType(), System.Guid.NewGuid().ToString(), startupScript, true);
------------------------------------
クライアント側スクリプト
------------------------------------
<script>
function CorrectIDs(spreadClientId, number) {
var listIds = ["data", "view", "viewport", "viewport0", "viewport1", "viewport2", "rowHeader", "colHeader", "waitmsg", "TouchStrip", "top_table", "corner", "cht", "hct", "fct", "fcht", "cht", "fcft", "cft", "frh", "rh"];
for (i = 0; i < listIds.length; i++) {
newId = spreadClientId + "_" + listIds[i];
oldId = spreadClientId + "_" + listIds[i] + "_" + number;
if (document.getElementById(oldId) != null && typeof (document.getElementById(oldId)) != 'undefined') {
document.getElementById(oldId).id = newId;
}
}
}
</script>
Service Pack 4より前のバージョンでは次の回避方法が有効です。
------------------------------------------
下記のように、ClientIDModeプロパティによりRepeaterコントロール上のIDを設定した上で、製品のコントロール情報に正しくアクセスできるようスクリプトを実装することにより回避できます。
------------------------------------
Webフォームクラス
------------------------------------
string startupScript = string.Empty; // 回避コード1
foreach (RepeaterItem item in Repeater1.Items)
{
FarPoint.Web.Spread.FpSpread spread = new FarPoint.Web.Spread.FpSpread();
FarPoint.Web.Spread.SheetView sheet = new FarPoint.Web.Spread.SheetView();
sheet.ColumnCount = 20;
sheet.RowCount = 10;
sheet.PageSize = 10;
spread.Sheets.Add(sheet);
spread.ActiveSheetView.SetValue(0, 0, string.Format("A{0}", count));
spread.Height = 300;
spread.Width = 500;
item.ClientIDMode = System.Web.UI.ClientIDMode.AutoID; // 回避コード2
item.Controls.Add(spread);
startupScript += string.Format("CorrectIDs('{0}','{1}');", spread.ClientID.ToString(), count) + Environment.NewLine; // 回避コード3
count++;
}
// 回避コード4
if (!string.IsNullOrEmpty(startupScript))
ScriptManager.RegisterStartupScript(this.Page, this.Page.GetType(), System.Guid.NewGuid().ToString(), startupScript, true);
------------------------------------
クライアント側スクリプト
------------------------------------
<script>
function CorrectIDs(spreadClientId, number) {
var listIds = ["data", "view", "viewport", "viewport0", "viewport1", "viewport2", "rowHeader", "colHeader", "waitmsg", "TouchStrip", "top_table", "corner", "cht", "hct", "fct", "fcht", "cht", "fcft", "cft", "frh", "rh"];
for (i = 0; i < listIds.length; i++) {
newId = spreadClientId + "_" + listIds[i];
oldId = spreadClientId + "_" + listIds[i] + "_" + number;
if (document.getElementById(oldId) != null && typeof (document.getElementById(oldId)) != 'undefined') {
document.getElementById(oldId).id = newId;
}
}
}
</script>
旧文書番号
83409