2012-06-17 57 views
1

分頁這裏是我試圖解決的用例:Yii的:客戶端排序&與CGridView和CArrayDataProvider

我有我在網格正在顯示數據的數組。我正在使用CGridView,並用CArrayDataProvider包裝該數組。

我在一個請求中獲取數組的所有數據,我想純粹在客戶端(使用javascript)進行分頁。 IE:如果我的數組有100個項目,我想每次顯示20個分頁/排序 - 而不必爲分頁/排序功能提出任何額外的服務器請求。

在做了一堆Google搜索之後,我無法找到一個已經存在的解決方案,並且不需要編寫我自己的CSort/CPagination實現。有沒有人碰巧有這樣的解決方案/可以指向我一些有用的東西?

+1

你有沒有嘗試爲'CArrayDataProvider'設置'pagination'屬性爲20? [文檔中有一個例子](http://www.yiiframework.com/doc/api/1.1/CArrayDataProvider/)。 – adamors

+0

我想你誤解了這個問題。設置每頁的項目數量不是挑戰。問題在於默認分頁仍然依靠服務器端請求來滾動頁面。 IE:頁面鏈接將是通過控制器重新加載頁面的鏈接,並添加頁面/ ID偏移量。這不是理想的行爲。期望的行爲是分頁純粹發生在使用JavaScript的瀏覽器中。 – Eugene

+1

分頁的重點在於避免大型HTML頁面和長頁面加載。即使您不顯示所有內容,拒絕AJAX調用也會顯着降低網站的性能。 'Yii' ATM不能這樣做。您可以做的最接近的事情是,基於點擊來隱藏/顯示「CGridView」中的條目。 – adamors

回答

-3
$dataProvider = new CArrayDataProvider($RESPONSEDATA,array('keyField'=>'task_id','pagination' => array('pageSize' => 3))); 
+1

除了一行代碼之外,您可能還想添加一些解釋。只需要一行代碼,儘管它可能會回答這個問題,但確實會造成一個糟糕的答案。 – Bart