/ / Yii CGridView renderowany wewnątrz CJuiDialog nie będzie filtrowany ani zamawiany - ajax, yii, cgridview, cjuidialog

Yii CGridView renderowane wewnątrz CJuiDialog nie będą filtrowane lub sortowane - ajax, yii, cgridview, cjuidialog

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 № 1

Ten 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.