2015.10.28

jqGrid

最新jqGrid 行クリックの挙動

以前まではバージョン4.6.0を使っていて今回新しいプロジェクトから
現時点(2015/10)で最新のバージョン4.9.0-rcへ変更しました。

変更後に気づいたのは行クリックでハイライト(選択状態)になり、
再度クリックするとが消えました。(未選択状態)

以前までのバージョンではそのような挙動ではなかったと思います。

クリックして行を選択。
on

再度同じ行をクリック。
off
“multiselect: false”にしてますが、
このように選択を切り替えるトグルになってます。

これを回避する方法です。

var selrow; // グローバル変数

jQuery("#list").jqGrid({
  . . . 
beforeSelectRow: function(rowid, e)  {
    if (selrow === rowid) {
        return false;
    } else {
        return true;
    }
},
onSelectRow: function(id) {
    if (id && id !== selrow) {
        selrow = id; 
    }
},

onSelectRowで選択中のidをselrowに保持し、
beforeSelectRowでselrowと新しくクリックされたidを比較し、
一致の場合はfalse、不一致の場合trueを返します。

因みに、beforeSelectRowで常にfalseを返すとハイライトされません。