Can you help my please – I am using a master-detail grid with custom events. I need to pass a column value from the detail grid to my custom delete handler but can't figure out the correct way of doing it. I already have update and add handlers working but I had to use different coding in each to retrieve the column values.
In the update function I just use $data["params"]["idSection"] to retrieve the values from the detail grid and this works fine. In the add function I had to use:
$id = intval($_GET["rowid"]);
$data["params"]["idRoute"] = $id;
and then the value from $data["params"]["idRoute"] works.
Neither of these seems to work in my delete function! I have studied all of the relevant demos but none seem to cover this particular combination of master-detail with cutom events.
Can you please explain the correct approach to returning column values from the detail grid to the event handlers.
Many thanks,
Cliff
Hello Cliff,
In delete event handler, only id (or first column) is passed as parameter. You need to fetch other details by querying database.
In custom-events.php sample, it is mentioned like this:
function delete_client($data)
{
/*
These comments are just to show the input param format
$data => Array
(
[client_id] => 2
)
*/
}
Ah, OK, I understand. I am actually dealing with many-to-many relationships so this makes things a little more complex when doing deletes, but I can see how to work around the problem. Thanks again for such a prompt response.
Cliff
Sorry but I'm still struggling with this. The first column of my detail grid is not being returned. I seem to be getting the key value from the main grid rather than the detail grid. In my master grid I have:
$opt["detail_grid_id"] = "list2";
$opt["subgridparams"] = "idRoute";
and idRoute is correctly passed to the detail grid. In the detail grid I have:
$dg->select_command = "Select idRouteSection,idRoute,idSection,sectionName,sectionDesc from vw_sectionsbyroute where idSection in (select fk_idSection from tblroutesection where fk_idRoute = $idRoute)";
and the first column of the detail grid is declared as:
$col = array();
$col["title"] = "Route-Section ID"; // caption of column
$col["name"] = "idRouteSection"; // grid column name, same as db field or alias from sql
$col["width"] = "3"; // width on grid
$col["editable"] = true;
$col["hidden"] = false;
$cols1[] = $col;
I'm calling the delete event handler:
$e["on_delete"] = array("delete_section", null, false);
and in the delete event handler I have:
$id = intval($_GET["rowid"]);
The value being passed in $id is the row key from the main grid (idRoute) and not the row key from the detail grid (idRouteSection).
Any suggestions please?
Thanks,
Cliff
The first column (pk) of detail grid can be accessed by: $data["id"]
You can also print_r($data); and see the output in firebug ajax call response.