Last active
June 14, 2020 20:08
-
-
Save gridphp/2a0f4dc6744eeb3f1d2d4833689b94bb to your computer and use it in GitHub Desktop.
Formatter in XLS and PDF, line 94,95,99 - https://www.gridphp.com
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
/** | |
* PHP Grid Component | |
* | |
* @author Abu Ghufran <gridphp@gmail.com> - http://www.phpgrid.org | |
* @version 2.0.0 | |
* @license: see license.txt included in package | |
*/ | |
// include db config | |
include_once("../../config.php"); | |
// include and create object | |
include(PHPGRID_LIBPATH."inc/jqgrid_dist.php"); | |
// Database config file to be passed in phpgrid constructor | |
$db_conf = array( | |
"type" => PHPGRID_DBTYPE, | |
"server" => PHPGRID_DBHOST, | |
"user" => PHPGRID_DBUSER, | |
"password" => PHPGRID_DBPASS, | |
"database" => PHPGRID_DBNAME | |
); | |
$g = new jqgrid($db_conf); | |
$col = array(); | |
$col["title"] = "Id"; // caption of column | |
$col["name"] = "id"; | |
$col["width"] = "10"; | |
$cols[] = $col; | |
$col = array(); | |
$col["title"] = "Client"; | |
$col["name"] = "client_id"; | |
$col["width"] = "100"; | |
$col["align"] = "left"; | |
$col["search"] = true; | |
$col["editable"] = true; | |
$col["formatter"] = "select"; | |
$col["edittype"] = "select"; // render as select | |
# fetch data from database, with alias k for key, v for value | |
$str = $g->get_dropdown_values("select distinct client_id as k, name as v from clients"); | |
$col["editoptions"] = array("value"=>":;".$str); | |
$cols[] = $col; | |
$col = array(); | |
$col["title"] = "Date"; | |
$col["name"] = "invdate"; | |
$col["width"] = "50"; | |
$col["editable"] = true; // this column is editable | |
$col["editoptions"] = array("size"=>20); // with default display of textbox with size 20 | |
$col["editrules"] = array("required"=>true); // and is required | |
$col["formatter"] = "date"; // format as date | |
$col["formatoptions"] = array("srcformat"=>'Y-m-d',"newformat"=>'d/m/Y'); // format as date | |
$col["search"] = false; | |
$cols[] = $col; | |
$grid["sortname"] = 'id'; // by default sort grid by this field | |
$grid["sortorder"] = "desc"; // ASC or DESC | |
$grid["caption"] = "Invoice Data"; // caption of grid | |
$grid["autowidth"] = true; // expand grid to screen width | |
$grid["multiselect"] = false; // allow you to multi-select through checkboxes | |
// export XLS file | |
// export to excel parameters - range could be "all" or "filtered" | |
$grid["export"] = array("format"=>"pdf", | |
"filename"=>"my-file", | |
"heading"=>"Export to Excel Test", | |
"range"=>"filtered"); | |
$g->set_options($grid); | |
$g->set_actions(array( | |
"add"=>false, // allow/disallow add | |
"edit"=>true, // allow/disallow edit | |
"delete"=>true, // allow/disallow delete | |
"rowactions"=>true, // show/hide row wise edit/del/save option | |
"export"=>true, // show/hide export to excel option | |
"autofilter" => true, // show/hide autofilter for search | |
"search" => "advance" // show single/multi field search condition (e.g. simple or advance) | |
) | |
); | |
// you can provide custom SQL query to display data | |
$g->select_command = "SELECT id, invdate, client_id,total FROM invheader"; | |
// this db table will be used for add,edit,delete | |
$g->table = "invheader"; | |
// pass the cooked columns to grid | |
$g->set_columns($cols); | |
$e["on_render_excel"] = array("custom_export", null, true); | |
$e["on_render_pdf"] = array("custom_export", null, true); | |
$g->set_events($e); | |
// custom on_export callback function | |
function custom_export($param) | |
{ | |
global $g; | |
// lookup of dropdown | |
$sql = "select distinct client_id as k, name as v from clients"; | |
$result = $g->execute_query($sql); | |
if ($g->con) | |
{ | |
$arr = $result->GetRows(); | |
foreach($arr as $rs) | |
{ | |
$rs["k"] = (!empty($rs["K"])) ? $rs["K"] : $rs["k"]; | |
$rs["v"] = (!empty($rs["V"])) ? $rs["V"] : $rs["v"]; | |
$lookup[$rs["k"]] = $rs["v"]; | |
} | |
} | |
$data = &$param["data"]; // the complete grid object reference | |
$i=0; | |
foreach($data as &$d) | |
{ | |
// skip first column title | |
if ($i++ == 0) continue; | |
$d["client_id"] = $lookup[$d["client_id"]]; | |
} | |
} | |
// generate grid output, with unique grid name as 'list1' | |
$out = $g->render("list1"); | |
?> | |
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> | |
<html> | |
<head> | |
<link rel="stylesheet" type="text/css" media="screen" href="../../lib/js/themes/redmond/jquery-ui.custom.css"></link> | |
<link rel="stylesheet" type="text/css" media="screen" href="../../lib/js/jqgrid/css/ui.jqgrid.css"></link> | |
<script src="../../lib/js/jquery.min.js" type="text/javascript"></script> | |
<script src="../../lib/js/jqgrid/js/i18n/grid.locale-en.js" type="text/javascript"></script> | |
<script src="../../lib/js/jqgrid/js/jquery.jqGrid.min.js" type="text/javascript"></script> | |
<script src="../../lib/js/themes/jquery-ui.custom.min.js" type="text/javascript"></script> | |
</head> | |
<body> | |
<div style="margin:10px"> | |
<?php echo $out?> | |
</div> | |
</body> | |
</html> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment