2017-09-15 6 views
1

Sur beginCellEdit dans ui-grille, je voudrais cliquer sur la cellule par programmation pour entrer en profondeur modifier. Existe-t-il une méthode qui me permettrait de le faire dans le gestionnaire d'événements beginCellEdit?Programatically cliquez sur la cellule dans ui-grille pour entrer en profondeur modifier

Mon beginCellEdit est illustré ci-dessous.

gridApi.edit.on.beginCellEdit($scope, function (rowEntity, colDef, newValue, oldValue) { 

//method to invoke the click action 

}); 

Faites-moi savoir.

Répondre

0

L'édition en profondeur est initiée en cliquant sur la cellule qui est déjà en mode d'édition.

Ce sera une solution de contournement sale au mieux, mais il semble fonctionner.

Vous aurez besoin d'un code de this answer, plus un moyen d'obtenir l'élément que vous voulez cliquer. J'ai ui-grid-cellNav activé, donc ma cellule a la classe: 'ui-grid-cell-focus' Aussi j'utilise jQuery puisque je l'ai chargé de toute façon.

$('.ui-grid-cell-focus').parent().find('form').children()[0] 

Je sélectionnez la cellule, puis-je obtenir son parent, trouver un élément de forme à l'intérieur et sélectionnez le premier élément enfant à l'intérieur que dans l'espoir que ça va marcher avec plus que des boîtes d'entrée simples.

Voici le tout.

function eventFire(el, etype) { 
    if (el.fireEvent) { 
     (el.fireEvent('on' + etype)); 
    } else { 
     var evObj = document.createEvent('Events'); 
     evObj.initEvent(etype, true, false); 
     el.dispatchEvent(evObj); 
    } 
} 

$scope.gridOptions.onRegisterApi = function (gridApi) { 
    gridApi.edit.on.beginCellEdit($scope, function (rowEntity, colDef, newValue, oldValue) { 
     eventFire($('.ui-grid-cell-focus').parent().find('form').children()[0], 'click'); 
    }); 
};