2012-06-08 16 views
6

मैं अपने मॉडल में एक कस्टम समारोह बनाया गया है और कच्चे डेटा वापसी:Yii CGrid पृष्ठांकन और CArrayDataProvider does not काम के साथ छँटाई

function(){ 
... 
$connection=Yii::app()->db; 
$command=$connection->createCommand($sql); 
$rows=$command->queryAll(); 
return $rows; 
} 

$ campModel = $ मॉडल> ​​समारोह ..

मैं तो का उपयोग CArrayDataProvider में उन पंक्तियों:

$dataProvider=new CArrayDataProvider($campModel); 

अंत में मैं CGrid का उपयोग कर देखने की कोशिश कर रहा हूँ:

$this->widget('zii.widgets.grid.CGridView', array(
'id'=>'bo-campaigns-grid', 
'dataProvider'=>$campModel,... 

मेरा अनुमान है कि इस तरह से CGrid पेजिंग है के साथ क्या करना है ... लेकिन मैं खो रहा हूँ

$this->widget('zii.widgets.grid.CGridView', array(
    'id' => 'bo-campaigns-grid', 
    'dataProvider'=> new CArrayDataProvider($campModel, array(
     'pagination' => array(
      'pageSize' => 10 
     ) 
    )), 
    ... 
+1

से अधिक आसानी से सॉर्टिंग को संभालना चाहिए यदि आप एक CArrayDataProvider का उपयोग करने जा रहे हैं तो आपको विशेष रूप से कस्टम सीपीएग्नेशन और सीएसओआर ऑब्जेक्ट्स को क्रमशः क्रमबद्ध करने की आवश्यकता है 'और' पेजिनेशन 'गुण। – sucotronic

+0

मुझे लगता है कि यह वही तरीका है ... क्या आप कृपया एक उदाहरण दे सकते हैं? –

+0

कैक्टिवडेटाप्रोवाइडर – Orlymee

उत्तर

9

मदद :)

+0

धन्यवाद ... मुझे लगता है कि यह इसे नाखून :) –

+0

आपका स्वागत है :) – sucotronic

+0

सहायक सुझाव के लिए बहुत बहुत धन्यवाद। यहां एक प्रश्न है: क्या पूरे पृष्ठ को पुनः लोड करने के बजाय एजेक्स के साथ ग्रिड को फिर से लोड करना संभव है? – bjtilley

0

इस कोशिश के लिए धन्यवाद, एक नया बनाएं सीएसओआरटी और सीपीएग्नेशन ऑब्जेक्ट्स और उन्हें अपने डेटाप्रोवाइडर को असाइन करें, क्योंकि CArrayDataProvider उन्हें परिभाषित नहीं करता है। यहां सीएसओआर निर्माण का एक उदाहरण दिया गया है:

$dataProvider=new CArrayDataProvider($campModel); 
$sort = new CSort(); 
$sort->attributes = array(
      'fecha'=>array(
       'asc'=>'dateA DESC', 
       'desc'=>'dateA ASC', 
      ), 
); 
$sort->route = 'myController/myMethod'; 
$dataProvider->sort = $sort; 
$dataProvider->sort->defaultOrder='dateA DESC'; 
+0

का उपयोग करने का एक और तरीका होगा इससे पहले (वास्तव में इसके साथ शुरू हुआ ... काम नहीं करता है। –

+0

मेरा बुरा, पेजिंग आकार देने के लिए कॉन्फ़िगर जोड़ने के लिए भूल गया। – Alex

0

आप CSqlDataProvider को भी देख सकते हैं। सुनिश्चित नहीं है कि यह आपको आवश्यक एसक्यूएल लचीलापन देगा, लेकिन इसे आपके लिए सीर्रेडाटाप्रोवाइडर