Probleme bei GridView AjaxUpdate

Hallo,

ich bin neu hier und arbeite mich gerade ins Yii ein.

Ich versuche ein Essensbestellsystem zu basteln, habe auch überwiegend alles soweit fertig, allerdings hänge ich bei einen GridView fest.

Ich ändere den Inhalt des GridViews durch ein Dropdown (Kalenderwoche) ab. Wenn die Seite aufgerufen wird, dann wird das GridView schon mit den Informationen der aktuellen Kalenderwoche gefüllt. Wenn ich durch das Dropdown auf die nächste Kalenderwoche klicke, dann wird das GridView dementsprechen dmit den neuen Informationen gefüllt.

Das funktioniert soweit.

Mein Problem ist jetzt, wenn ich in der nächsten Kalenderwoche eine Bestellung (Ajax) mache, dann switcht das GridView wieder auf die aktuelle Kalenderwoche, also die, die beim Laden der Seite aufgerufen wird. Das will ich aber vermeiden. Wie kann ich das anstellen, das die Informationen nach einer Bestellung immer noch von der ausgewählten Kalenderwoche kommen?

Ich bin für jede Hilfe dankbar.

De emphele ich den CPagination im DataProvieder zu nutzen.

Beispiel:


 				

'pagination'=>array(

'currentPage'=>$currentPage,

)



In $currentPage hast du dann die Aktuelle Page drin. ( P.s Wenn du Blätters wird ein Ajax Request abgesetzt dann kannst du per Get die Page abfangen und speichern. )

Zweite möglich keit wäre die Extension xreturnable, die findest du hier: xReturnable

Oder eine dritte Möglichkeit, so wie ich das in meinen Projekten mache:

ich speichere die Woche, die ich gerade ansehe, einfach in der $_SESSION resp.

Yii::app()->user->setState(‘current_viewed_week’, 42);

das CGridView schaut dann beim request welche Woche denn der User gerade haben will.

Hat vor,- und nachteile gegenüber der Variante, die aktuelle Woche immer als GET-Parameter

mitzuschleifen. Wenn deine user aber sowieso cookies benutzen (müssen?), ist meine Variante

auch denkbar.

Danke schonmal für die Unterstützung.

Ich habe das ‘currentPage’=>$currentPage, schonmal bei mir eingebaut. das erspart mir momentan schon 2 Variablen, die ich übergeben hatte. Kein Plan, warum ich 2 Variablen brauchte, um einen Wert zu übergeben.

Das $currentPage gibt im GridView auch das zurück, was ich brauche, allerdings bin ich mir noch nicht im Klaren, wie ich diesen Wert per GET an meine Speicher-Methode bekomme und wie ich das GridView dann mit dem Wert wieder update.

momentan übergebe ich die ID der Mahlzeit, die bestellt werden soll, so:




...

'url' => 'Yii::app()->createUrl("Site/SaveOrder", array("id" => $data->m_id))',

'options' => array(

    'ajax' => array(

        'type' => 'GET',

        'url' => "js:$(this).attr('href')", // ajax post will use 'url' specified above

        'update' => '#result',

    ),

),

...



und das Update des GridView aus meiner Speichermethode mache ich so:




...

echo "<script>$.fn.yiiGridView.update('gridkw');</script>";



Wie gesagt, das Speichern und das Updaten macht er ja schon, nur wenn ich eine andere Kalenderwoche aufgerufen habe und will da bestellen, springt er mit dem Update wieder in die ursprüngliche Kalenderwoche.

Okay ich glaube ich habe vorhin falsch gelesen ich hatte verstanden das wenn du eine andere KalenderWoche auswählst und dann Blätterst dann eine Bestellung machst dann die Aktuelle Seite verloren geht.

Also in der actionSaverOrder übergibst du ja die Daten über GET eig müsstest du dann auch die aktuelle KalenderWoche damit abfangen können, die der User vor der Bestellung eingestellt hat.

Und dann müstest du ja in deiner DropDownList das Selectet angeben was dann die aktuelle Kalenderwoche ist die du abgefangen hast.