2012-03-26 14 views
1

jqGridRender(javascriptを使用するjqGridのphp専用バージョン)を使用して複数選択関数を実装したいと思います。とにかく私はそれを実装する問題を抱えています。 http://www.trirand.com/blog/?page_id=393/help/multiselect-with-shift-to-emulate-the-same-behaviour-as-in-the-file-explorer/#p9963私はこの関数をheredoc文字列($ myevent変数)として宣言してから、$ gird-> setGridEvent( '$ myevent変数)の下で呼び出すことにしました。 onSelectRow '、$ myevent);しかし、それはここでは、動作しないエラーがある(しかし、彼らは本当の原因である場合、私はsuerないよ):jqGridRenderを使用して複数の行を選択する

Notice: Undefined variable: gird in C:\xampp\htdocs\kmedia\grid.php on line 72 

Fatal error: Call to a member function setGridEvent() on a non-object in C:\xampp\htdocs\kmedia\grid.php on line 72 

私も、お聞きしたいのですがどのように私はcellEdit機能を作るのですか、保存私はそれが動作cellEditするグリッドオプションを設定していたとき以来の変数に変更、しかし、保存されませんなど

+0

'$ gird'はオブジェクトではありません。最初に初期化する必要があります。 – slash197

+0

ああ、私はタイプミスを修正したとにかく、うまくいきません。エロスはありません。 – Malyo

+1

@Malyo:関連の質問はhttp://stackoverflow.com/questions/10007453/how-to-de-select-selected -row-if-shiftup-arrow-key-press-in-jqgridこれには、選択を解除するコードも含まれています。 – Andrus

答えて

1

あなたは他の答え(私はそれを少し修正)からオレグ素晴らしい提案を使用することができます。

$.extend($.fn.jqGrid, { 
    bindKeys: function (settings) { 
     var o = $.extend({ 
      onEnter: null, 
      onSpace: null, 
      onLeftKey: null, 
      onRightKey: null, 
      scrollingRows: true 
     }, settings || {}); 
     return this.each(function() { 
      var $t = this; 
      if (!$('body').is('[role]')) { $('body').attr('role', 'application'); } 
      $t.p.scrollrows = o.scrollingRows; 
      $($t).keydown(function (event) { 
       if (isInlineEdit()) { 
        return; // am if removed space etc does not work in inline edit 
       } 
       var target = $($t).find('tr[tabindex=0]')[0], id, r, mind, 
         expanded = $t.p.treeReader.expanded_field; 
       if (!target && $t.p.selrow !== null) { 
        r = $("#" + $t.p.selrow); 
        if (r.length > 0) { 
         target = r[0]; 
        } 
       } 
       //check for arrow keys 
       if (target) { 
        mind = $t.p._index[target.id]; 
        if (event.keyCode === 37 || event.keyCode === 38 || event.keyCode === 39 || event.keyCode === 40) { 
         // up key 
         if (event.keyCode === 38) { 
          r = target.previousSibling; 
          id = ""; 
          if (r) { 
           if ($(r).is(":hidden")) { 
            while (r) { 
             r = r.previousSibling; 
             if (!$(r).is(":hidden") && $(r).hasClass('jqgrow')) { id = r.id; break; } 
            } 
           } else { 
            id = r.id; 
           } 
          } 
          if ($.inArray(id, $t.p.selarrrow) === -1) { 
           if (!event.shiftKey) {// AM. added for shift+up arrow 
            $($t).jqGrid('resetSelection'); 
            idsOfSelectedRows = []; // AM. Added 
           } 
           // todo: how to unselect row if shift is hold? 
           // this only selectcts row 
           $($t).jqGrid('setSelection', id); 
           saveWindowState(); 
          } else { 
           $t.p.selrow = id; 
          } 
         } 
         //if key is down arrow 
         if (event.keyCode === 40) { 
          r = target.nextSibling; 
          id = ""; 
          if (r) { 
           if ($(r).is(":hidden")) { 
            while (r) { 
             r = r.nextSibling; 
             if (!$(r).is(":hidden") && $(r).hasClass('jqgrow')) { id = r.id; break; } 
            } 
           } else { 
            id = r.id; 
           } 
          } 
          if ($.inArray(id, $t.p.selarrrow) === -1) { 
           if (!event.shiftKey) {// AM. added for shift+up down arrow 
            $($t).jqGrid('resetSelection'); // AM. added 
            idsOfSelectedRows = []; 
           } 
           // todo: how to unselect row if shift is hold? 
           // this only selectcts row 
           $($t).jqGrid('setSelection', id); 
           saveWindowState(); 
          } else { 
           $t.p.selrow = id; 
          } 
         } 
         // left 
         if (event.keyCode === 37) { 
          if ($t.p.treeGrid && $t.p.data[mind][expanded]) { 
           $(target).find("div.treeclick").trigger('click'); 
          } 
          if ($.isFunction(o.onLeftKey)) { 
           o.onLeftKey.call($t, $t.p.selrow); 
          } 
         } 
         // right 
         if (event.keyCode === 39) { 
          if ($t.p.treeGrid && !$t.p.data[mind][expanded]) { 
           $(target).find("div.treeclick").trigger('click'); 
          } 
          if ($.isFunction(o.onRightKey)) { 
           o.onRightKey.call($t, $t.p.selrow); 
          } 
         } 
         return false; 
        } 
        //check if enter was pressed on a grid or treegrid node 
        else if (event.keyCode === 13) { 
         if ($.isFunction(o.onEnter)) { 
          o.onEnter.call($t, $t.p.selrow); 
         } 
         return false; 
        } else if (event.keyCode === 32) { 
         if ($.isFunction(o.onSpace)) { 
          o.onSpace.call($t, $t.p.selrow); 
         } 
         return false; 
        } 
       } 
      }); 
     }); 
    } 
}); 
関連する問題