2010-10-31 93 views
4

我在項目中使用flexigrid,我希望能夠在網格刷新後保留選定的行。我問在flexigrid討論板同樣的問題,我得到了這樣的回答:Flexigrid:選擇行以保持刷新

添加一個單擊處理程序,如果選擇的行的行ID保存ID。在刷新完成後,再次(如果仍然存在)選擇行

不知道如何在這個行動,我甚至不知道的功能是如何的樣子,所以這就是爲什麼我沒有任何代碼開始。

如果有人能指出我在正確的方向將不勝感激。

謝謝,

克里斯蒂安。

回答

1

我已經做了小代碼,以保持分頁和刷新期間的多選。

$("#searchPhonoList").flexigrid($.extend({}, flexigridAttrs, { 
     url: './rest/phono/search', 
     preProcess: formatSearchPhonoResults, 
     onSuccess: successSearchPhono, 
     onSubmit: submit, 
     method: 'GET', 
     dataType: 'json', 
     colModel : [ 
      {display: 'titre', name: 'titre_brut', width : 240, sortable : true, align: 'left'}, 
      {display: 'version', name: 'version_brut', width : 60, sortable : true, align: 'left'} 
     ], 
     height: "auto", 
     sortname: "score", 
     sortorder: "desc", 
     showTableToggleBtn: false, 
     showToggleBtn: false, 
     singleSelect: false, 
     onToggleCol: false, 
     usepager: true, 
     title: "Liste des candidats", 
     resizable: true, 
     rp:20, 
     useRp: true 
    })); 

    var searchPhonoListSelection = new Array(); 

    $('#searchPhonoList').click(function(event){ 

     $(' tbody tr', this).each(function(){ 
      var id = $(this).attr('id').substr(3); 
      if (searchPhonoListSelection.indexOf(id) != -1) { 
       searchPhonoListSelection.splice(searchPhonoListSelection.indexOf(id), 1); 
      } 
     }); 

     $('.trSelected', this).each(function(){ 
      var id = $(this).attr('id').substr(3); 
      if (searchPhonoListSelection.indexOf(id) == -1 ) { 
       searchPhonoListSelection.push(id); 
      } 
     }); 
    }); 


    function successSearchPhono() { 
     $("#searchPhonoList tbody tr").each(function() { 
      var id = $(this).attr('id').substr(3); 
      if (searchPhonoListSelection.indexOf(id) != -1) { 
       $(this).addClass("trSelected"); 
      } 
     }); 
    } 
2

Flexigrid將一個名爲trSelected的類添加到選定的行,因此無論何時發生點擊事件,只要查找所有選定的行並以某種方式保存它們即可。下面是你可以做的一個簡單的例子:

var selectedRows = new Array(); 

$('#myGrid').click(function() { 
    selectedRows = new Array(); 

    $(this).find('tr.trSelected').each(function(i, selectedRow) { 
     selectedRows.push($(selectedRow));   
    }); 
});