简体   繁体   English

嵌套网格的JqWidgets上下文菜单中面临双重发布问题

[英]Facing double posting issue in JqWidgets context menu for nested grid

I am facing double posting problem in JqWidgets context menu for nested grid. 我在嵌套网格的JqWidgets上下文菜单中面临双重发布问题。 The event is getting fire n time (where "n" is no of time I clicked context menu) 事件在n次触发(其中“ n”不是我单击上下文菜单的时间)

Apart from this if I am keeping event handler method outside the context menu creation than on such case event handler is not getting called 除此之外,如果我将事件处理程序方法保留在上下文菜单创建之外,那么在这种情况下,不会调用事件处理程序

Scenario-1 (where I am getting double posting problem, unable to get selected row column value) 方案1 (我遇到双重发布问题,无法获取选定的行列值)

//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);
         }
}

Scenario-2 (where my event handler is not getting called when I am keeping outside context menu creation block) 场景2 (当我不在上下文菜单创建块中时,未调用事件处理程序)

// 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);
         }
}

Thanks in advance 提前致谢

Event can be raised n times, only if you bind to it n times. 仅当您绑定事件n次后,事件才能引发n次。 Check your code how many times you call your teamButtonClick function which binds to "itemclick". 检查您的代码调用绑定到“ itemclick”的teamButtonClick函数的次数。 It's more than 1 time if "itemclick" is called more than 1 time :) 如果“ itemclick”被调用超过1次,则超过1次:)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM