2015-04-16 1 views
1

Je suis confronté à un problème de double affichage dans le menu contextuel de JqWidgets pour la grille imbriquée. En dehors de cela, si je garde la méthode du gestionnaire d'événements en dehors de la création du menu contextuel, dans ce cas, le gestionnaire d'événements n'est pas appelé.Problème de double affichage dans le menu contextuel de JqWidgets pour la grille imbriquée

Scénario-1 (où je reçois problème de double affichage, incapable d'être sélectionné valeur de la colonne de la ligne)

//handle context menu clicks. 
var teamButtonClick = function (event) { 

    try{ 

      // create context menu for Task 
      var taskContextMenu = jQuery("#teamMenu").jqxMenu({ width: 160, height: 162, autoOpenPopup: false, mode: 'popup'}); 
      jQuery("#<portlet:namespace />teamGrid").on('contextmenu', function() { 
       return false; 
      }); 
      jQuery("#teamMenu").on('itemclick', function (event) { 
       try { 
        var args = event.args; 
        var rowindex = jQuery("#teamGrid").jqxGrid('getselectedrowindex'); 
        if (jQuery.trim(jQuery(args).text().trim()) == "Add User") { 
         editrow = rowindex; 
         jQuery("#rowId").val(editrow); 
         var dataRecord = jQuery("#teamGrid").jqxGrid('getrowdata', args.rowindex); 
         alert(dataRecord);     
        } 
       }catch(e) {alert(e);} 
      }); 

      var buttonID = event.target.id;  
      jQuery("#teamGrid").jqxGrid('selectrow', buttonID); 
      var scrollTop = jQuery(window).scrollTop(); 
      var scrollLeft = jQuery(window).scrollLeft(); 
      taskContextMenu.jqxMenu('open', parseInt(event.clientX) + 5 + scrollLeft, parseInt(event.clientY) + 5 + scrollTop); 
      return false; 
     }catch(e) { 
      alert('error in contextmenu: ' + e); 
     } 
} 

Scénario-2 (où mon gestionnaire d'événements n'est pas appelé quand je suis en dehors du menu contextuel creat bloc ion)

// event handler is not getting called in this case 
jQuery("#teamMenu").on('itemclick', function (event) { 
    try { 
     var args = event.args; 
     var rowindex = jQuery("#teamGrid").jqxGrid('getselectedrowindex'); 
     if (jQuery.trim(jQuery(args).text().trim()) == "Add User") { 
      editrow = rowindex; 
      jQuery("#rowId").val(editrow); 
      var dataRecord = jQuery("#teamGrid").jqxGrid('getrowdata', args.rowindex); 
      alert(dataRecord);     
     } 
    }catch(e) {alert(e);} 
}); 

//handle context menu clicks. 
var teamButtonClick = function (event) { 

    try{ 

      // create context menu for Task 
      var taskContextMenu = jQuery("#teamMenu").jqxMenu({ width: 160, height: 162, autoOpenPopup: false, mode: 'popup'}); 
      jQuery("#<portlet:namespace />teamGrid").on('contextmenu', function() { 
       return false; 
      }); 

      var buttonID = event.target.id;  
      jQuery("#teamGrid").jqxGrid('selectrow', buttonID); 
      var scrollTop = jQuery(window).scrollTop(); 
      var scrollLeft = jQuery(window).scrollLeft(); 
      taskContextMenu.jqxMenu('open', parseInt(event.clientX) + 5 + scrollLeft, parseInt(event.clientY) + 5 + scrollTop); 
      return false; 
     }catch(e) { 
      alert('error in contextmenu: ' + e); 
     } 
} 

de Merci à l'avance

Répondre

0

événement peut être relevé n fois, que si vous liez à N fois. Vérifiez votre code combien de fois vous appelez votre fonction teamButtonClick qui se lie à "itemclick". C'est plus d'une fois si "itemclick" est appelé plus d'une fois :)