开发者

jqGrid disable row highlighting

开发者 https://www.devze.com 2023-01-18 12:20 出处:网络
How can you programatically disable the grid from highlighting a row when you hover over it with your mouse?Looking to do disable this only at certain times.

How can you programatically disable the grid from highlighting a row when you hover over it with your mouse? Looking to do disable this only at certain times.


This is the code from Oleg which worked:

  $('#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" );
  });


Use hoverrows:false option.


A simple Google search revealed this source: http://www.trirand.net/examples/appearance/highlight_on_hover/default.aspx

"By default, jqGrid hightlight rows on hover. This is controlled by the AppearanceSettings.HighlightRowsOnHover property - setting it to false will disable that."


I'm currently replacing the existing mouseover handler with an intermediate function that just calls the existing handler if the grid is enabled, like this:

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

This way I don't have to copy the jqgrid event code.

I don't like the use of mouseover[0].handler, but it works for the moment.

0

精彩评论

暂无评论...
验证码 换一张
取 消