0

dojox.grid.EnhancedGrid編集可能なセルを持つを使用しています。は編集モードSPACEBARをトリガーし ます(これはまあまあのアプローチだと思います)。ただし、プログラムで(隣接するセルのリンクを介して)またはダブルクリックして編集モードをトリガーし、 「This value is good」のようなテキストを入力し始めると、 (「This」の後)を押すとすぐにgrid は編集を再度トリガーしようとし、これまでに入力した内容を削除します。SPACEBAR

これを修正する方法を知っている人はいますか?イベント以外の編集モードでセルに入る他の手段を使用する場合にのみ発生するため、本当に面倒ですonKeyDown(つまり、セルにフォーカスしてセルを押すとENTER、セルが編集モードになり、スペースが許可されます。セルをダブルクリックして入力すると編集モードを初めて押しSPACEBARたときに編集モードが台無しになります)。

ご回答ありがとうございます。

4

2 に答える 2

0

この問題を解決できたようです。この投稿は私を助けます: Dojo DataGrid列の編集モードを動的に制御します

ここに最終的な解決策があります:

var customOnEditActivate = function(e){
 var event;
 if(this._click.length > 1 && has('ie')){
  event = this._click[1];
 }else if(this._click.length > 1 && this._click[0].rowIndex != this._click[1].rowIndex){
  event = this._click[0];
 }else{
  event = e;
 }
 this.focus.setFocusCell(event.cell, event.rowIndex);
 this.onRowClick(event);
 this.edit.setEditCell(event.cell, event.rowIndex);
 this.onRowDblClick(e);
};

wordsGrid = new dojox.grid.EnhancedGrid({
                query : ...,
                store : ...,
                singleClickEdit: false,
                selectionMode:"single",
....
}, container);
dojo.connect(wordsGrid, "onCellDblClick", customOnEditActivate);

そのため、onCellDblClick に接続しなくても edit イベントが発生します。しかし、customOnEditActivate 内のコードは、グリッドのプロパティでいくつかの魔法を実行し、この問題を修正しているようです。他の解決策がある場合は、共有してください。

于 2012-11-30T13:08:23.413 に答える