Мне кажется, что CGridView или CListView должен делать это автоматически.Они поддерживают обновление / пейджинг AJAX из коробки.
Я предполагаю, что у вас есть действие AJAX, например «actionMarkRead ()», которое вы вызываете, когда пользователь нажимает.Я предполагаю, что это где-то устанавливает поле базы данных, говоря, что пользователь «прочитал» этот элемент Чтобы это работало с CListView, просто убедитесь, что у CDataProvider есть condition
, который проверяет это поле "read" (возможно, потребуется присоединиться к таблице, я не знаю, как выглядит ваша БД).Затем, когда список перезагружается через AJAX, у него будет правильное количество страниц для представления меньшего числа страниц, возвращаемых запросом CDataProvier.
Я только что проверил это, и оно работает!
То, как я его протестировал, я настроил CGridView с 'ajaxUpdate'=>true,
.Затем в моем CDataProvider я установил 'pagination'=>1
, чтобы облегчить тестирование.Затем я использовал AJAX actionDelete
по умолчанию в моем контроллере для удаления элементов.Каждый раз, когда я удалял элемент с помощью этой ссылки действия AJAX в CGridView, сетка обновлялась с помощью AJAX, а количество страниц уменьшалось на 1. Кажется, что это работает как очарование!