Renderuję CGridView wewnątrz CJuiDialog i to działa dobrze.
Mój problem polega na tym, że za każdym razem, gdy klikam nagłówek kolumny, aby posortować rekordy, strona się zmienia (URL jest adresem URL widoku renderowanego za pomocą renderPartial poprzez ajax), a żądanie nie jest ajax ( Yii::app()->request->isAjaxRequest
wewnątrz kontrolera jest fałsz).
Ponadto, jeśli odfiltruję dowolne pole, nic się nie stanie.
Jak mogę pozwolić użytkownikowi sortować lub filtrować CGridView?
LUB: Czy istnieje inny sposób, aby pozwolić użytkownikowi wybrać pole klucza obcego za pomocą CGridView?
Odpowiedzi:
0 dla odpowiedzi № 1Ten problem prawdopodobnie występuje, ponieważ błąd javascript lub funkcja kliknięcia w kodzie są zastępowane (i nie zwracają wartości false). Czy możesz pokazać swój kod?
0 dla odpowiedzi nr 2
W końcu znalazłem rozwiązanie.
Kiedy wywołujesz renderPartial, musisz ustawić trzeci parametr = FAŁSZ, a czwarty parametr = PRAWDA.
$this->renderPartial("ajax_view",array(
"model"=>$model,
"dataProvider"=>$dataProvider,
),false,TRUE);
Z oficjalnej dokumentacji:
zwrot $ boolean czy wynik renderowania powinien zostać zwrócony, a nie wyświetlany użytkownikom końcowym $ processOutput boolean czy wynik renderowania powinien zostać przetworzony za pomocą processOutput.
I NAJWAŻNIEJSZE TWEAK: Wewnątrz widoku renderowanego za pomocą renderPartial musisz dodać:
Yii::app()->clientscript->scriptMap["jquery.js"] = false;
Strona jest przeładowywana po prostu „ponieważ jquery zostało załadowane wiele razy.