Hello,
I use a grid with one dependent dropdowns in a form edit mode. The dropdowns works very well, and it’s OK in the create mode . But a I have a problem in edit mode. When my users come back to the grid for modify a row, in the edit form , the second dropdown (the dependent) do not reload the previous value. The second dropdown displayed “Select”.
How I can force the reload the previous value for the second dropdown ? or it’s a limit of jqgrid ?
(sorry for my english, I’m french)
Thank,
Kind Regard
THE PRINCIPAL GRID:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 |
<!--?php// Load des parametres de connexion require_once '../rex_at-config.php'; // Load des Class jqGrid require_once "../../php/PHPSuito/jqGrid.php"; // Load des paramétres PDO pour jqGrid require_once "../../php/PHPSuito/DBdrivers/jqGridPdo.php"; require_once "../../php/PHPSuito/External/tcpdf/config/lang/fra.php"; mysql_set_charset('utf8'); // Connexion au serveur $conn = new PDO(DB_DSN,DB_USER,DB_PASSWORD); // Déclaration du format UTF-8 de la BDD $conn->query("SET NAMES utf8");</p> <p> // Création d'une instance jqGrid<br ?--> $grid = new jqGridRender($conn); // Parametrage de l'export CSV $grid->setCsvOptions(array("separator" =>",","file" =>"mycsvfile.csv")); // Activation du mode debug $grid->debug = false; // Load de la requête SQL $grid->SelectCommand = " SELECT id_at, type, date_at, uo_poles, unites, description, commentaires, nom, prenom, CP, jeune_embauche, arret, duree_arret, code1, code2, lesion, siege, epi, DPA_trait, DPA_valid FROM rex_at"; // Déclaration de la table MaJ $grid->table = 'rex_at'; // Définition d'une clé primaire $grid->setPrimaryKeyId('id_at'); $grid->serialKey = false; //Déclaration du format d'échange $grid->dataType = 'json'; // Déclaration du model du grid $grid->setColModel(); // Déclaration du fichier de chargement de données $grid->setUrl('grid_rex_at.php'); // Déclaration d'autres options $grid->setGridOptions(array( "caption"=>"Saisie REX des AT TMV", // Titre du tableau "rowNum"=>15, // Nombre de lignes par défaut à afficher "rowList"=>array(20,35,50), // Déclaration du nombres de lignes affichables "sortname"=>"date_at", // Déclaration du tri par défaut "sortorder"=>"desc", "width"=>1900, "height"=>"Auto", // Hauteur automatique du tableau "hoverrows"=>true // highlight la ligne survolée )); // **************************************** // Règle d'édition des champs par défaut $grid->setColProperty('id_at', array("hidden"=>true)); $grid->setColProperty('type', array("label"=>"Type", "width"=>70, "align"=>"center", "editable"=>true)); $grid->setColProperty('uo_poles', array("label"=>"UO/Pôles", "width"=>90, "align"=>"center", "editable"=>true)); $grid->setColProperty('unites', array("label"=>"Unités", "width"=>90, "align"=>"left", "editable"=>true)); $grid->setColProperty('nom', array("label"=>"Nom", "width"=>90, "align"=>"left", "editable"=>true)); $grid->setColProperty('prenom', array("label"=>"Prénom", "width"=>70, "align"=>"left", "editable"=>true)); $grid->setColProperty('CP', array("label"=>"Num CP", "width"=>60, "align"=>"center", "editable"=>true)); $grid->setColProperty('jeune_embauche', array("label"=>"J-emb", "align"=>"center", "width"=>40, "editable"=>true)); $grid->setColProperty('arret', array("label"=>"Arrêt", "width"=>25, "align"=>"center", "editable"=>true)); $grid->setColProperty('lesion', array("label"=>"Lésion", "width"=>60, "editable"=>true)); $grid->setColProperty('duree_arret',array("label"=>"Durée arrêt", "width"=>60, "align"=>"center", "editable"=>true,"formatter"=>"integer", "formatoptions"=>array("suffix"=>" jours"))); $grid->setColProperty('siege', array("label"=>"Siège", "width"=>40, "align"=>"center", "editable"=>true)); $grid->setColProperty('epi', array("label"=>"EPI", "width"=>20, "align"=>"center", "editable"=>true)); $grid->setColProperty('code1', array("label"=>"Codage N1", "width"=>110, "align"=>"left", "editable"=>true)); $grid->setColProperty('code2', array("label"=>"Codage N2", "width"=>110, "align"=>"left", "editable"=>true)); $grid->setColProperty('DPA_trait', array("label"=>"Traite DPA", "width"=>50, "align"=>"center", "editable"=>true, "formatter"=>"integer", "formatoptions"=>array("suffix"=>" jours"))); $grid->setColProperty('DPA_valid', array("label"=>"Valid DPA", "width"=>50, "align"=>"center", "editable"=>true, "formatter"=>"integer", "formatoptions"=>array("suffix"=>" jours"))); $grid->setColProperty('code2', array("edittype"=>"select", "editoptions"=>array("value"=>" :Select"))); // "editoptions"=>array("size"=>15), Nb de lignes affichées simultanément // **************************************** // Champ en zone de texte $grid->setColProperty('description', array("label"=>"Description", "edittype"=> 'textarea',"editoptions"=>array("rows"=>4, "cols"=>50, "maxlength"=>255, "width"=>120), "width"=>200, "editable"=>true)); $grid->setColProperty('commentaires', array("label"=>"Commentaires", "edittype"=> 'textarea',"editoptions"=>array("rows"=>4, "cols"=>50, "maxlength"=>255, "width"=>120), "width"=>100, "editable"=>true)); // **************************************** // règle d'édition des champs dropdown $grid->setSelect("type", "SELECT champ_type, champ_type FROM drop_type_at ORDER BY champ_type ASC",false,true,true); //$grid->setSelect("uo_poles", "SELECT <code>code_N1</code>,<code>code_N1</code> FROM <code>drop_cause_at_n1</code> ORDER BY <code>code_N1</code> ASC",false,true,true); $grid->setSelect("uo_poles", "SELECT pole, pole FROM menu_pole ORDER BY pole ASC",false,true,true); $grid->setSelect("unites", "SELECT unite, unite FROM <code>menu_unite</code> ORDER BY <code>unite</code> ASC ",false,true,true); $grid->setSelect("code1", "SELECT <code>code_N1</code>,<code>code_N1</code> FROM <code>drop_cause_at_n1</code> ORDER BY <code>code_N1</code> ASC ",false,true,true); $grid->setSelect("lesion", "SELECT <code>lesion</code>,<code>lesion</code> FROM <code>drop_lesion</code> ORDER BY <code>lesion</code> ASC",false,true,true); $grid->setSelect("siege", "SELECT <code>siege</code>,<code>siege</code> FROM <code>drop_siege</code> ORDER BY <code>siege</code> ASC",false,true,true); $grid->setSelect("jeune_embauche", "SELECT Choix,Choix FROM drop_choix_o_n ORDER BY Choix ASC",false,true,true); $grid->setSelect("arret", "SELECT Choix,Choix FROM drop_choix_o_n ORDER BY Choix ASC",false,true,true); $grid->setSelect("epi", "SELECT Choix,Choix FROM drop_choix_o_n ORDER BY Choix ASC",false,true,true); // **************************************** // Option d'édition Time datepicker $grid->setColProperty('date_at', array("label"=>"Date événement","align"=>"center", "width"=>100,"formatter"=>"date", "formatoptions"=>array("reformatAfterEdit"=>true, "srcformat"=>"Y-m-d H:i:s", "newformat"=>"d/m/Y H:i"), // Ok. We use some trick here to create the datepicker on dataInit event // when the element is created. Note the js: before the function. // this instruct the grid to put a javascript code without additional formating "editoptions"=>array("dataInit"=> "js:function(elm){setTimeout(function(){ jQuery(elm).datetimepicker({dateFormat:'dd/mm/yy'}); jQuery('.ui-datepicker').css({'font-size':'75%'}); },0);}") )); $grid->setDbTime('Y-m-d H:i:s'); $grid->setUserTime("d/m/Y H:i"); // **************************************** // Fonction de génération des menus déroulants en cascade $beforeshow = <<< BEFORESHOW function(formid) { // recupère la valeur du premier dropdown var cntryval = $("#code1",formid).val(); jQuery("#code2",formid).html("Select"); if(cntryval) { // // associe au résultat du fichier JSON JSON_codeN2.php // jQuery.ajax({ url: 'JSON_codeN2.php', dataType: 'json', data: {q:cntryval}, success : function(response) { var t="", sv=""; var sr = jQuery("#grid").jqGrid('getGridParam','selrow'); if(sr) { // sélectionne les causes présente dans le tableau sv = jQuery("#code2").jqGrid('getCell',sr,'code1'); jQuery.each(response, function(i,item) { t += ""+item.value+""; }); // vide le select et remplace par la nouvelle selection jQuery("#code2",formid).html("").append(t); if(sv) { // recupere la valeur du second dropdown jQuery("#code2",formid).val(sv).removeAttr("disabled"); } } } }); } else { jQuery("#code2",formid).attr("disabled","disabled"); } } BEFORESHOW; // Avec cet événement nous lions un changement au niveau du premier dropdown // Si une nouvelle valeur est choisi, nous faisons un appel AJAX pour avoir les valeurs du second dropdown lié au premier // Notez que cet événement doit être exécutée une seule fois si le formulaire est construit. $initform = <<< INITFORM function(formid) { jQuery("#code1",formid).change(function(e) { var cntryval = $(this).val(); if(cntryval) { jQuery("#code2",formid).html(""); jQuery.ajax({ url: 'JSON_codeN2.php', dataType: 'json', data: {q:cntryval}, success : function(response) { var t=""; jQuery.each(response, function(i,item) { t += ""+item.value+""; }); jQuery("#code2",formid).append(t).removeAttr("disabled"); } }); } }); } INITFORM; // ***************** Fin du script des menus en cascade *********************** // **************************************** // Configuration du navigateur $grid->navigator = true; // Activer le navigateur CRUD $grid->setNavOptions('navigator', array("excel"=>true,"pdf"=>true,"add"=>true,"edit"=>true,"del"=>true,"view"=>true, "search"=>true)); // Déclaration des options de la barre des tâches CRUD $grid->setNavOptions('edit', array("height"=>'auto',"dataheight"=>"auto","width"=>'auto',"closeAfterEdit" => true)); // Paramètre du formulaire d'édition $grid->setNavOptions('add', array("addCaption"=>"Nouvelle fiche retard","closeAfterAdd"=>true,"height"=>'auto',"dataheight"=>"auto","width"=>'auto')); // Paramètre du formulaire de création // Initialisation des fonctions des menu en cascade. // Lie la fonction "$beforeshow" à l'événement "avant l'ouverture du formulaire" en mode ajout et modif $grid->setNavEvent('edit', 'beforeShowForm', $beforeshow); $grid->setNavEvent('add', 'beforeShowForm', $beforeshow); // Lie la fonction "$initform" à l'événement "à l'initialisation du formulaire" en mode ajout et modif $grid->setNavEvent('edit', 'onInitializeForm', $initform); $grid->setNavEvent('add', 'onInitializeForm', $initform); // *************************************** // Parametrage des export Excel et PDF $grid->exportfile = 'Export_retard_tmv.xls'; // Définition du nom du fichier d'export Excel $oper = jqGridUtils::GetParam("oper"); // Parametre d'exportation PDF if($oper == "pdf") { $grid->setPdfOptions(array( "page_orientation"=>"L", // Orientation de la page en paysage "L" ou portrait "P" "header"=>true, // Activation d'un entête "margin_top"=>20, // Déclaration d'une en-tete de haut de page "margin_bottom"=>0, // Déclaration d'une en-tete de bas de page "margin_footer"=>5, "header_logo"=>"logo.gif", // Nom d'un logo dans répertioire PDF php/ tcpdf "header_logo_width"=>20, //Déclaration de la largeur du logo "header_title"=>"Export retard sortie de site", // Titre de l'en-tête "shrink_cell"=>false, // Activation/Desactivation du tassement des valeurs "encoding" => "UTF-8", // Encodage UTF-8 "reprint_grid_header"=>true, // Affichage des titres de colonnes sur chaque page "header_string"=>"Technicentre de Villeneuve" // Texte d'en-tête à imprimer )); } //********************************* // Paramètre de rendu du Grid $grid->renderGrid('#test1','#pager',true, null, null, true,true); ?> |
THE JSON PHP PAGE:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
<?php header('Content-Type: text/html; charset=utf-8'); require_once '../rex_at-config.php'; // Load des Class jqGrid //require_once "php/jqGrid.php"; // Load des paramétres PDO pour jqGrid require_once "../../php/PHPSuito/DBdrivers/jqGridPdo.php"; //$country = "Manipulation d'objets au cours du travail"; $country = $_GET['q']; if($country){ try { $conn = new PDO(DB_DSN,DB_USER,DB_PASSWORD); $SQL = "SELECT DISTINCT(cause_detail) id, cause_detail value FROM menu_cause WHERE Imputation='".$country."' ORDER BY cause_detail"; //$SQL = "SELECT DISTINCT(City) id, City value FROM customers WHERE Country='".$country."' ORDER BY City"; $collation = jqGridDB::query($conn, "SET NAMES utf8"); $city = jqGridDB::query($conn, $SQL); $result = jqGridDB::fetch_object($city, true, $conn); echo json_encode($result); } catch (Exception $e) { echo $e->getMessage(); } } ?> |
Jqgrid PHP 5.1.0
Copyright 2014 TriRand LtdAll Rights ReservedRSS
Back to Top