2015-10-18 131 views
7

我想知道是否有在yii2 GridView的複選框列任何內置的選項來選擇/取消一次都行..選擇gridview的yii2的複選框列中的所有網頁上的所有記錄

例如,如果我有500個記錄在GridView中,我一次顯示100條記錄,一次只能選擇100條記錄,並執行任何批量操作。

我希望用戶能夠在一次選擇的所有500條記錄,並做那些記錄任何批量操作一次..希望大家把我的問題

我提出了一個建議,以警予在github框架車主和他們已經證實,他們會做這種增強很快就好了,把這個問題在增強部分,所以希望他們將包括它很快,但在那之前引導我任何替代方式來實現這一

謝謝

回答

2

是的,您可以使用CheckBoxColumn。只需添加以下行到您的GridView的列數組:

[ 
    'class' => 'yii\grid\CheckboxColumn', 
    'name' => 'id' 
], 

由於Yii2's公文:

CheckboxColumn顯示器checkboxes在網格視圖中的列。 要將CheckboxColumn添加到yii\grid\GridView,它如下添加到列配置:

'columns' => [ 
// ... 
    [ 
     'class' => 'yii\grid\CheckboxColumn', 
     // you may configure additional properties here 
    ], 
] 

用戶可以點擊checkboxes選擇網格行。選定的行可以致電以下JavaScript代碼來獲得:

var keys = $('#grid').yiiGridView('getSelectedRows'); 
// keys is an array consisting of the keys associated with the selected rows 
+0

我已經實現了..但我的問題是有點不同..考慮我在網格中有500條記錄..我只顯示100行一頁..如果我必須選擇所有500行在一次,並做所有500行的共同行動比我從第一頁不能做到這一點...我希望你得到我的觀點 –

+0

@MikeRoss請檢查這個答案 https://stackoverflow.com/a/30066826/ 959939 – SenG

0

你必須做一個POST請求時分頁使用(連載的形式,做「保存」在每個分頁選定的網格項目一個ajax請求)。 然後使用提交的ID在您的頁面上有一些預選部分。

在這個預選部分,將一些複選框(複選框組)複製到預先選定的id不在當前網格頁面上的頁面上,並顯示一個簡單的文本來指示它是哪個項目(名稱等)。

因此,在您當前的網格頁面上,您可以選中具有網格複選框的項目,並且當您爲這些「選定」複選框分頁時,將在此預選部分中呈現複選框。

這樣,您可以選擇多個頁面上的項目,也可以取消選擇不在頁面上的項目。

在你的「行動」,那麼你只需結合兩個複選框組來獲得所有選定的項目。

存在對yii1相似提到here

的東西也有一個yii1擴展,這是否here也許你會複製代碼yii2或發現一些類似的擴展。

0

默認情況下,它是不可能的(還)。但您可以保存密鑰以備後用。這是基本的想法,我希望它給你一個開始。

<script type="text/javascript"> 
$(document).ready(function(){ 
    var selectedItems = []; 

    $('#delete_selected_items_btn').click(function(){ 
     selectedItems = selectedItems.concat($('.grid-view').yiiGridView('getSelectedRows')); 
     // select all rows on page 1, go to page 2 and select all rows. 
     // All rows on page 1 and 2 will be selected. 
     console.log(selectedItems); 
    }) 
}) 
</script> 

我的假設是,你正在使用PJAX的GridView。

+0

感謝您的回答,但現在我創建了接受'eventid'的額外操作,並且我找到了該事件的所有密鑰並從單獨的操作發送。 –