2010-09-07 76 views
1

我一直在使用JQGrid很多,並會推薦給大家。 我不太喜歡的一個功能是內置的多選,它不使用像shift和ctrl這樣的特殊按鍵,不會給你太多的控制權並強制顯示覆選框。JQGrid onselectrow events - custom multiselect

我想實現我自己的多重選擇,如下所示: 在onSelectRow-檢查shift或ctrl是否被保持將行ID添加到數組並在網格中選中它。如果沒有保留,清除數組並添加新的行ID並在網格中選擇它。

這很容易實現,除了我需要在onSelectRow事件來檢查是否按住鍵。我不想在主文檔本身上附加一個keydown和keyup事件。

onSelectRow: function (id) { 
      event=??? 
      if (!event.shiftKey && !event.ctrlKey) { 

      } 
      else { 

      } 
} 

Regards, Byron Cobb。

編輯:解決方案 -

繼Olegs輸入,我也做了以下內容。

  1. multiselect: true網格定義
  2. 通過設置$("#myGrid").jqGrid('hideCol', 'cb');
  3. 檢查Ctrl鍵自己隱藏在gridComplete複選框列(不使用多鍵:「中ctrlKey」)之前,選擇和清除選擇,如果沒有按下ctrl鍵。
  4. 後來使用選擇陣列需要的時候 - var SelectedRows = $("#myGrid").jqGrid('getGridParam', 'selarrrow');

beforeSelectRow: function (rowid, e) { 
      if (!e.ctrlKey) { 
       $("#myGrid").resetSelection(); 
      } 
      return true; 
     }, 

回答

2

Since the version 3.5.3 jqGrid的支持beforeSelectRow事件,活動,你需要和將onSelectRow之前被調用。

大概的jqGrid的multikey選項,名稱爲「CB」

$("#mygrid").jqGrid('hideCol','cb'); 

僞列的隱藏的使用(CB - 組合框,看到http://www.trirand.com/blog/?page_id=393/help/multiselect-without-checkboxes-1/)將幫助你在jqGrid的機具你想要的行選擇行爲。

更新:我想你也知道$("#mygrid").jqGrid('getGridParam','selarrrow')可以用來獲取所有當前選定的行的ID數組,但要確保我也插入信息。

+0

再次感謝。我有我的版本在beforeSelectRow中工作。使用multikey嘗試默認多選:「ctrlKey」僅在ctrl被按下時調用onSelectRow - 是否不清除多選並開始新選擇? – Bob 2010-09-07 10:28:46

+0

在我的beforeSelectRow中,我將它設置爲始終返回true,但是使用multiselect和multikeys(當按住ctrl時)仍然不會調用onSelectRow – Bob 2010-09-07 10:30:12

+0

@Byron Cobb:恭喜!在我看來,你實施的行爲可能對jqGrid的其他用戶來說很有趣。您可以附加您的問題與代碼共享與其他解決方案。此外,您還可以在http://www.trirand.com/blog/發佈它?page_id = 393/feature-request /可能它會成爲下一個版本的jqGrid的一部分。 – Oleg 2010-09-07 10:52:03

相關問題