Hi all,
I have a problem using the Master Detail Grid feature with phpgrid version 1.5. Here the relevant code passage:
master grid:
$opt["detail_grid_id"] = "list83,list84,list85";
// extra params passed to detail grid, column name comma separated
$opt["subgridparams"] = "id_customer";
$grid->set_options($opt);
detail grid:
// receive id, selected row of parent grid
$id = intval($_GET["rowid"]);
$idCustomer = intval($_GET["id_customer"]);
$col_detail_5 = array();
$col_detail_5["title"] = "Address";
$col_detail_5["name"] = "id_facilityAddress";
$col_detail_5["width"] = "45";
$col_detail_5["align"] = "left";
$col_detail_5["search"] = false;
$col_detail_5["editable"] = true;
$col_detail_5["editrules"] = array("edithidden"=>true);
$col_detail_5["hidden"] = true;
$col_detail_5["edittype"] = "select"; // render as select
# fetch data from database, with alias k for key, v for value
$str = $grid->get_dropdown_values("SELECT id_customerAddress as k, CONCAT(addressStreet,' / ',addressZIP,' / ',addressCity) as v FROM customerAddress WHERE id_customer = $idCustomer;");
$col_detail_5["editoptions"] = array(
"value"=>$str,
// "onchange" => array("sql"=>"SELECT id_facility as k, facilitySN as v FROM facility WHERE id_facilityAddress = '{id_facilityAddress}'",
"onchange" => array("sql"=>"SELECT f.id_facility as k, CONCAT(f.facilitySN,' / ',p.facilityPN,' / ', t.typeName) as v FROM facility f INNER JOIN facilityPartNumber p ON f.id_facilityPN = p.id_facilit
"update_field" => "id_facility")
);
$col_detail_5["stype"] = "select"; // enable dropdown search
$col_detail_5["searchoptions"] = array("value" => ":;".$str);
$col_detail_5["formatter"] = "select"; // display label, not value
$cols_detail_5[] = $col_detail_5;
I have verified, that the content of $idCustomer is containing the correct values but I always get an empty dropdown field, only when I hardcode the value in the SELECT statement I get the correct entry in the dropdown list.
I suppose that the variable is not correctly evaluated.
How can this be resolved ?
Thank you for your kind help.
best regards
Andreas
Hello Andreas,
I am emailing you a demo to use master param in detail's dropdown.
The key code is:
$col = array();
$col["title"] = "Client";
$col["name"] = "client_id";
$col["editable"] = true;
$col["edittype"] = "select"; // render as select
$str = $grid->get_dropdown_values("select distinct client_id as k, name as v from clients");
$col["editoptions"] = array("value"=>$str);
$col["editoptions"]["onload"]["sql"] = "select distinct client_id as k, name as v from clients WHERE client_id = $id";
$col["formatter"] = "select"; // display label, not value
$cols[] = $col;
Hello Abu,
I have tested the "onload" option and the first dropdown list is now correctly populated, but the "onchange" "update_field" instruction does not seem to work in combination with the onload directive. What I want to achieve is to load some values in the first dropdown dependent on a master grid value and a second dropdown with values dependent on the choosen entry of the first dropdown. When I change/select a different value in first dropdown the second dropdown is filled with values from dropdown one.
1st dropdown:
$col_detail_5 = array();
$col_detail_5["title"] = "Adresse";
$col_detail_5["name"] = "id_facilityAddress";
$col_detail_5["width"] = "45";
$col_detail_5["align"] = "left";
$col_detail_5["search"] = false;
$col_detail_5["editable"] = true;
$col_detail_5["editrules"] = array("edithidden"=>true);
$col_detail_5["hidden"] = true;
$col_detail_5["edittype"] = "select"; // render as select
# fetch data from database, with alias k for key, v for value
$str = $grid->get_dropdown_values("SELECT id_customerAddress as k, CONCAT(addressStreet,' / ',addressZIP,' / ',addressCity) as v FROM customerAddress");
$col_detail_5["editoptions"] = array(
"value"=>$str,
"onload" => array("sql"=>"SELECT id_customerAddress as k, CONCAT(addressStreet,' / ',addressZIP,' / ',addressCity) as v FROM customerAddress WHERE id_customer = $idCustomer;"
"onchange" => array("sql"=>"SELECT f.id_facility as k, CONCAT(f.facilitySN,' / ',p.facilityPN,' / ', t.typeName) as v FROM facility f INNER JOIN facilityPartNumber p ON f.id_facilityPN = p.id_facilityPN INNER JOIN type t ON p.id_type = t.id_type WHERE f.id_facilityAddress = '{id_facilityAddress}'",
"update_field" => "id_facility")
);
$col_detail_5["stype"] = "select"; // enable dropdown search
$col_detail_5["searchoptions"] = array("value" => ":;".$str);
$col_detail_5["formatter"] = "select"; // display label, not value
$cols_detail_5[] = $col_detail_5;
2nd dropdown:
$col_detail_5 = array();
$col_detail_5["title"] = "Anlage SN / Typ / Anlagenart ";
$col_detail_5["name"] = "id_facility";
$col_detail_5["width"] = "45";
$col_detail_5["align"] = "left";
$col_detail_5["search"] = false;
$col_detail_5["editable"] = true;
$col_detail_5["editrules"] = array("edithidden"=>true);
$col_detail_5["hidden"] = false;
$col_detail_5["edittype"] = "select"; // render as select
# fetch data from database, with alias k for key, v for value
$str = $grid->get_dropdown_values("SELECT f.id_facility as k, CONCAT(f.facilitySN,' / ',p.facilityPN,' / ', t.typeName) as v FROM facility f INNER JOIN facilityPartNumber p ON f.id_f
$col_detail_5["editoptions"] = array("value"=>$str);
$col_detail_5["stype"] = "select"; // enable dropdown search
$col_detail_5["searchoptions"] = array("value" => ":;".$str);
$col_detail_5["formatter"] = "select"; // display label, not value
$cols_detail_5[] = $col_detail_5;
Thank you for your kind help
best regards
Andreas