作成日: 2020/01/31 最終更新日: 2020/02/06
文書種別
不具合
状況
修正済み
詳細
itemFormatterプロパティを利用して「cell.innerHTML = '<a href =~</a>'」のようにセルにリンクを設定して、スクロールしてからセルをクリックすると、リンクが1回目で反応しない場合があります。(この場合には、2回目でクリックが反応します)
回避方法
この問題はバージョン5.20191.615で修正されました。
修正版を適用しない場合の回避方法は次の通りです。
itemFormatterプロパティで設定しているcell.innerHTMLにはonclickイベントを定義しない空のaタグを設定した上で、マウスダウンされたセルがリンクタグだった場合に、選択された範囲にスクロールせずに、clicklinkメソッドを実行するようなイベントを追加します。
------------------------------------------------------------
var grid = new wijmo.grid.FlexGrid('#grid', {
itemsSource: getData(),
itemFormatter: function (panel, r, c, cell) {
if (panel.cellType === wijmo.grid.CellType.Cell && c === 1) {
//回避策(onclickイベントを定義しない空のaタグを設定する)
cell.innerHTML = '<a href="#">' + cell.innerHTML + '</a>';
}
},
});
grid.addEventListener(grid.hostElement, 'mousedown', function(e) {
if (e.target.tagName == 'A') {
let ht = grid.hitTest(e);
if (ht.panel == grid.cells) {
grid.select(ht.range, false);
clicklink(grid.rows[ht.row].dataItem);
e.preventDefault();
}
}
}, true);
function clicklink(e) {
console.log('clicked ' + e.country);
}
------------------------------------------------------------
修正版を適用しない場合の回避方法は次の通りです。
itemFormatterプロパティで設定しているcell.innerHTMLにはonclickイベントを定義しない空のaタグを設定した上で、マウスダウンされたセルがリンクタグだった場合に、選択された範囲にスクロールせずに、clicklinkメソッドを実行するようなイベントを追加します。
------------------------------------------------------------
var grid = new wijmo.grid.FlexGrid('#grid', {
itemsSource: getData(),
itemFormatter: function (panel, r, c, cell) {
if (panel.cellType === wijmo.grid.CellType.Cell && c === 1) {
//回避策(onclickイベントを定義しない空のaタグを設定する)
cell.innerHTML = '<a href="#">' + cell.innerHTML + '</a>';
}
},
});
grid.addEventListener(grid.hostElement, 'mousedown', function(e) {
if (e.target.tagName == 'A') {
let ht = grid.hitTest(e);
if (ht.panel == grid.cells) {
grid.select(ht.range, false);
clicklink(grid.rows[ht.row].dataItem);
e.preventDefault();
}
}
}, true);
function clicklink(e) {
console.log('clicked ' + e.country);
}
------------------------------------------------------------
旧文書番号
84907