Difference between #143 and #144 of
Dynamic parent and child CGridView on single view. Using $.ajax to update child gridview via controller, after row in parent gridview was clicked.

Changes

Title unchanged

Dynamic parent and child CGridView on single view. Using $.ajax to update child gridview via controller, after row in parent gridview was clicked.

Category unchanged

Tutorials

Yii version unchanged

Tags unchanged

dynamic, parent-child, CGridView, ajax, many_many, jquery event delegation, loading.gif, CGridView sorting and filtering on default and related models, sort dropDownList, sending selected dropDownList rows to controller, extract data from CGridView and pa

Content changed

[...]
If you want to retrieve the child records for a certain parent record, then you would NORMALLY just "read" one of the parent model's relations to the child model. This is called "Relational Query" in the Yii documentation.

However, in this example, we do not simply want to display the child records. No, we need much more. We need to be able to manipulate (sort/search/page and maybe even view/update/delete) the child records in their own CGridView. But to do all this with the child records in their own CGridView, they will need their own dataprovider.

So we do this by getting the child records DIRECTLY (not via relation
al query) from their own model, where their own dataprovider can be generated.

So (in short) the process works like this:
[...]
And that is exactly why - in the search() function - we can have a statement like:


 
 $criteria->compare('field1', $this->field1, false);
 
 
OR
 
 
$criteria->compare('field1', $parent_model->field1, false);

This statement instructs the dataprovider to only include records where
[...]
/* Url Problems:
If you receive 404 errors about the request not finding the
correct page or 'request failed' etc., then
the aboveyour url is probably not getting formattinged correctly. (Use Firebug to see if the
generated url contains both the controller and the action names.)
However, this error sometimes results from code in a totally
[...]
include the action's name in the url in the browser's address bar.

I guess the ajax-request uses the same url in the address bar to
 
generate its own url.
 
So make sure your url in the browser's address bar contains both 
 
the controller and action names
This gave me a hint, than maybe, my url is not formatted correctly.*/

request.done(function(response) {
try{
/*since you are updating innerHTML, make sure the
received data does not contain any javascript -
[...]