2016-08-02 7 views
2

私は編集可能なグリッドを持っています。 2つの列はItemCodeとQuantityです。ユーザーが数量を入力してダウンキーを押すと、次の行でItemCodeセルのフォーカスを次の行に設定します。このイベントリスナーを追加してセルに移動しましたが、すぐに編集モードに切り替わり、選択されたモードに切り替わります。セルを編集モードにしておく方法を教えてください。角度UIグリッドは、ナビゲート時にセルにフォーカスを設定します

gridApi.cellNav.on.navigate($scope, function (newRowcol, oldRowCol) { 
    $scope.$broadcast('uiGridEventEndCellEdit'); 

    if (oldRowCol != null && 
     oldRowCol.col.colDef.name == 'quantity' && 
     oldRowCol.row != newRowcol.row) { 
     newRowcol.row.grid.api.cellNav 
      .scrollToFocus(newRowcol.row.entity, 
          newRowcol.row.grid.options.columnDefs[1]); 
     } 
    }); 

UPDATE:私は上記のコメントのよう

$scope.gridOptions.columnDefs = [ 
{ 
    name: 'itemCode', 
    displayName: 'Part #', 
    editableCellTemplate: $scope.itemCodeEditableTemplate, 
    width: 150, 
    cellTooltip: function (row, col) { 
     return row.entity.itemCode 
    } 
}, 
{ 
    name: 'quantity', displayName: 'Qty', type: 'number', width: 60, 
    cellTooltip: function (row, col) { 
     return row.entity.quantity 
    } 
} 
] 
+1

これは、角度uiグリッドのバグだと思う。私がバグとして提起したとき、それは固定されていなかったが、回避策の詳細は一切なかった。 https://github.com/angular-ui/ui-grid/issues/4812と私のSOの投稿(http://stackoverflow.com/questions/33991169/scrolltofocus-to-cell-with-enablecelleditonfocus-true-does)を参照してください。 -not-make-the-cell-edi –

+0

特定の値を指定して特定のセルをタブで移動するときに、次の行のフィールドにジャンプしたい場合の回避策がありますが、移動するためにダウンキーを使用しているあなたの場合。基本的には、列定義内にenableCellEdit:falseを指定して偽のスペーサー列を作成する必要がありました。ユーザーにセル間のタブを尋ねることができる場合は、列の定義を投稿してください。可能な答えとして回避策を共有できます。 –

+0

OK。お返事をありがとうございます。私はhttps://www.ag-grid.com/を試してみて、先読みのためのUI-Gridのための回避策が既にあるので、それがどうなるか見てみよう。私は仕事に終わるつもりだどこでも。 ag-gridがうまくいかない場合は、回避策について質問します – Asagohan

答えて

1

、私は、これは角度-UI-グリッドのバグであると考えている。ここには私のcolumnDefsです。私の問題を回避するには、次のように...です

問題は別の行に移動するscrollToFocus()を使用しているが、通常のキーボード操作(タブ、ダウンなどの矢印)がenableCellEdit: trueを持つ列にあなたを取っているだろう。そのため、回避策の1つは、scrollToFocus()を呼び出す先の列にenableCellEdit: falseを設定することです。

それは醜いですが、私はタブから出る可能性があるすべての列の後に "スペーサー"列を作成しました。

{ name: 'itemCode', displayName: 'part #' }, 
{ name: 'quantity', displayName: 'qty' }, 
{ name: '_spacer1', displayName: '', width: '0%', minWidth: 1, maxWidth: 1, enableCellEdit: false }, 
{ name: 'someOtherColumn', displayName: 'something'}, 

だから、私の場合は私が「someOtherColumn」と「量」からタブをキャッチしたいとrow.entity.quantityの値は、(例えば)0だった場合、私はへscrollToFocus()を呼ぶだろう次の行タブ移動のための通常の次のセルはenableCellEdit: falseだったので、うまくいくでしょう。

あなたのケースでは、下向きの矢印キーを使用しているため、通常のキーボード操作で列を変更していないため、役立ちません。しかし、おそらくそれはあなたにアイデアを与えます。 (さらに、下矢印の代わりにタブを使用する場合は、回避策を使用することもできますし、必要なものもありません)。

上記のコメントにリンクされた私のバグを再オープンして、あなたも問題を抱えていると言って、本当の修正が何をすべきかについてまっすぐな答えを得ることができるかどうかを見てください! (私はそれを見たいと思っています)

関連する問題