【问题标题】:jqGrid disable row highlightingjqGrid 禁用行高亮
【发布时间】:2011-04-18 12:22:33
【问题描述】:

当您将鼠标悬停在网格上时,如何以编程方式禁止网格突出显示某行?希望仅在特定时间禁用此功能。


这是来自 Oleg 的有效代码:

  $('#result-close').click(function() {  
      //Turn off hover highlighting
      $("#list").unbind('mouseover');
      $("#list").unbind('mouseout');

      //Highlight row                    
      $("#" + selid).effect("highlight", {}, 5000);  

      //Turn on hover highlighting 
      setTimeout(function(){ 
                    $("#list").bind('mouseover',function(e) {
                        ptr = $(e.target).closest("tr.jqgrow");
                        if($(ptr).attr("class") !== "subgrid") {
                            $(ptr).addClass("ui-state-hover");
                        }
                        return false;
                    }).bind('mouseout',function(e) {
                        ptr = $(e.target).closest("tr.jqgrow");
                        $(ptr).removeClass("ui-state-hover");
                        return false;
                    });
      }, 2000);         

      $('#dialog').dialog( "close" );
  });

【问题讨论】:

    标签: jquery jqgrid highlight


    【解决方案1】:

    一个简单的谷歌搜索发现这个来源:http://www.trirand.net/examples/appearance/highlight_on_hover/default.aspx

    “默认情况下,jqGrid 在悬停时突出显示行。这由 AppearanceSettings.HighlightRowsOnHover 属性控制 - 将其设置为 false 将禁用它。”

    【讨论】:

    • 看到了。没有看到任何关于如何设置该对象的 JavaScript 示例。似乎被.NET代码以某种方式控制.. ??
    • 奇怪。看起来像 的一个属性。您可以在此问题中提供的代码中看到 AppearanceSettings 的实际效果:stackoverflow.com/questions/2058692/…
    【解决方案2】:

    使用hoverrows:falseoption

    【讨论】:

    • 当我在初始网格配置中设置它时,我可以让它工作。但是,如果我在初始加载后尝试使用$("#list").setGridParam({hoverrows:true}); 进行设置,新设置似乎不会生效。更改属性后尝试重新加载网格($("#list").trigger("reloadGrid");),但这似乎也不起作用。文档确实说这可以改变..有什么想法吗?
    • @Marcus:您就在trirand.com/jqgridwiki/doku.php?id=wiki:options 页面上的表格中。我认为这更多的是文档中的错误。不过,对于$("#list").unbind('mouseover');$("#list").unbind('mouseout');,您可以一次 动态关闭行悬停。请参阅ok-soft-gmbh.com/jqGrid/Pager.htm 上的演示(单击“禁用悬停行”)。你可没那么容易恢复初始状态。要恢复这一点,您必须再次将事件绑定到相应的函数(参见 grid.base.js 第 2109-2119 行)
    • @Marcus:查看github.com/tonytomov/jqGrid/blob/master/js/grid.base.js#L2111(第 2111-2121 行),这将在 hoverrows:true 的情况下使用
    • 谢谢奥列格 - 我真的需要一种方法来重新绑定事件以关闭然后悬停..
    • @Marcus:为什么不将'mouseover'和'mouseout'绑定到你的小事件处理程序,它们与github.com/tonytomov/jqGrid/blob/master/js/grid.base.js#L2111中的第2111-2121行完全一样?
    【解决方案3】:

    我目前正在用一个中间函数替换现有的鼠标悬停处理程序,如果启用了网格,该函数只调用现有的处理程序,如下所示:

    var enabled = true;
    var jqe = jQuery("#grid");
    var mouseover = jqe.data('events').mouseover[0].handler;
    jqe.unbind('mouseover');
    jqe.bind('mouseover', function() {
        if (enabled) {
            mouseover.apply(this, arguments);
        }
    });
    

    这样我就不用复制jqgrid事件代码了。

    我不喜欢 mouseover[0].handler 的使用,但它暂时有效。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多