ปัญหาอย่างหนึ่งของการสร้าง GridView หลายๆ ตัวในหน้าเดียวกันคือเมื่อมีการเลือก หน้า (Pagination) ทุกๆ GridView จะเปลี่ยนหน้าเหมือนกันหมด ในบทเรียนรู้นี้เราจะมากำหนด Page Param แยกอิสระต่อกัน เพื่อให้เวลาเลือกหน้าในแต่ละ GridView ไม่กระทบกัน โดยสามารถตั้งค่าผ่าน DataProvider ดังต่อไปนี้
$dataProvider = new ActiveDataProvider([
'query' => LatestThread::find()->orderBy(['sorting' => SORT_DESC]),
'sort' => [
'sortParam' => 'all-sort',
],
'pagination' => [
'pageSize' => 100,
'pageParam' => 'all-post',
],
]);
$dataProviderFreelance = new ActiveDataProvider([
'query' => LatestThread::find()->where(['forum_id' => 2])->orderBy(['sorting' => SORT_DESC]),
'sort' => [
'sortParam' => 'freelance-sort',
],
'pagination' => [
'pageSize' => 100,
'pageParam' => 'freelance-post'
],
]);
หรือกำหนดลักษณะนี้ก็ได้
$DataProvider->pagination->pageParam = 'all-post';
$DataProvider->sort->sortParam = 'all-sort';
$DataProvider2->pagination->pageParam = 'freelance-post';
$DataProvider2->sort->sortParam = 'freelance-sort';
เพียงเท่านี้ก็ทำให้การเลือกดู Page แยกอิสระต่อกันได้แล้ว
ความคิดเห็น