在同一网格上搜索多个日期选择器

时间:2012-12-05 08:06:57

标签: php jquery jqgrid jqgrid-php

我在同一个网格上使用多个日期选择器,我遇到了问题以获得正确的结果。

我在1个网格中使用了3个datepicker。

只有第一个日期选择器(订单日期)能够输出正确的结果,而另外两个日期选择器(开始日期和结束日期)无法生成正确的结果。

查询没有问题,所以你能找到这里发生了什么吗?

提前致谢!

php wrapper

<?php
ob_start();
require_once 'config.php';
// include the jqGrid Class
require_once "php/jqGrid.php";
// include the PDO driver class
require_once "php/jqGridPdo.php";
// include the datepicker
require_once "php/jqCalendar.php"; 
// Connection to the server
$conn = new PDO(DB_DSN,DB_USER,DB_PASSWORD);
// Tell the db that we use utf-8
$conn->query("SET NAMES utf8");

// Create the jqGrid instance
$grid = new jqGridRender($conn);
// Write the SQL Query
$grid->SelectCommand = "SELECT c.CompanyID, c.CompanyCode, c.CompanyName, c.Area, o.OrderCode, o.Date, m.maID ,m.System, m.Status, m.StartDate, m.EndDate, m.Type  FROM company c, orders o, maintenance_agreement m WHERE c.CompanyID = o.CompanyID AND o.OrderID = m.OrderID ";  
// Set the table to where you update the data
$grid->table = 'maintenance_agreement'; 
// set the ouput format to json
$grid->dataType = 'json';
// Let the grid create the model
$grid->setPrimaryKeyId('maID');
// Let the grid create the model
$grid->setColModel();
// Set the url from where we obtain the data
$grid->setUrl('grouping_ma_details.php');
// Set grid caption using the option caption
$grid->setGridOptions(array(
    "sortable"=>true,
    "rownumbers"=>true, 
    "caption"=>"Group by Maintenance Agreement",
    "rowNum"=>20,
    "height"=>'auto', 
    "width"=>1300,
    "sortname"=>"maID",
    "hoverrows"=>true,
    "rowList"=>array(10,20,50),     
    "footerrow"=>false,
    "userDataOnFooter"=>false,
    "grouping"=>true,
    "groupingView"=>array(
        "groupField" => array('CompanyName'),
        "groupColumnShow" => array(true), //show or hide area column
        "groupText" =>array('<b> Company Name: {0}</b>',),
        "groupDataSorted" => true,
        "groupSummary" => array(true)
    ) 
));

//Start Date
$grid->setColProperty("StartDate", array("label"=>"Start Date","width"=>120,"align"=>"center","fixed"=>true,
    "formatter"=>"date",
    "formatoptions"=>array("srcformat"=>"Y-m-d H:i:s","newformat"=>"d M Y")
    ));
$grid->setUserTime("d M Y");
$grid->setUserDate("d M Y");
$grid->setDatepicker("StartDate",array("buttonOnly"=>false));
$grid->datearray = array('StartDate');

//End Date
$grid->setColProperty("EndDate", array("label"=>"End Date","width"=>120,"align"=>"center","fixed"=>true,
    "formatter"=>"date",
    "formatoptions"=>array("srcformat"=>"Y-m-d H:i:s","newformat"=>"d M Y")
    ));
$grid->setUserTime("d M Y");
$grid->setUserDate("d M Y");
$grid->setDatepicker("EndDate",array("buttonOnly"=>false));
$grid->datearray = array('EndDate');

//Order Date
$grid->setColProperty("Date", array("label"=>"Order Date","width"=>100,"editable"=>false,"align"=>"center","fixed"=>true,
    "formatter"=>"date",
    "formatoptions"=>array("srcformat"=>"Y-m-d H:i:s","newformat"=>"d M Y")
    ));
$grid->setUserTime("d M Y");
$grid->setUserDate("d M Y");
$grid->setDatepicker("Date",array("buttonOnly"=>false));
$grid->datearray = array('Date');



// Enable toolbar searching
$grid->toolbarfilter = true;
$grid->setFilterOptions(array("stringResult"=>true,"searchOnEnter"=>false,"defaultSearch"=>"cn")); 
// Enable navigator
$grid->navigator = true;


$grid->setNavOptions('navigator', array("pdf"=>true, "excel"=>true,"add"=>false,"edit"=>true,"del"=>false,"view"=>true, "search"=>true));

$grid->renderGrid('#grid','#pager',true, null, null, true,true);
$conn = null;
?>  

javascript代码

    jQuery(document).ready(function ($) {
        jQuery('#grid').jqGrid({
            "width": 1300,
            "hoverrows": true,
            "viewrecords": true,
            "jsonReader": {
                "repeatitems": false,
                "subgrid": {
                    "repeatitems": false
                }
            },
            "xmlReader": {
                "repeatitems": false,
                "subgrid": {
                    "repeatitems": false
                }
            },
            "gridview": true,
            "url": "grouping_ma_details.php",
            "editurl": "grouping_ma_details.php",
            "cellurl": "grouping_ma_details.php",
            "sortable": true,
            "rownumbers": true,
            "caption": "Group by Maintenance Agreement",
            "rowNum": 20,
            "height": "auto",
            "sortname": "maID",
            "rowList": [10, 20, 50],
            "footerrow": false,
            "userDataOnFooter": false,
            "grouping": true,
            "groupingView": {
                "groupField": ["CompanyName"],
                "groupColumnShow": [true],
                "groupText": ["<b> Company Name: {0}</b>"],
                "groupDataSorted": true,
                "groupSummary": [true]
            },
            "datatype": "json",
            "colModel": [{
                "name": "CompanyID",
                "index": "CompanyID",
                "sorttype": "int",
                "editable": true
            }, {
                "name": "CompanyCode",
                "index": "CompanyCode",
                "sorttype": "string",
                "editable": true
            }, {
                "name": "CompanyName",
                "index": "CompanyName",
                "sorttype": "string",
                "editable": true
            }, {
                "name": "Area",
                "index": "Area",
                "sorttype": "string",
                "editable": true
            }, {
                "name": "OrderCode",
                "index": "OrderCode",
                "sorttype": "string",
                "editable": true
            }, {
                "name": "Date",
                "index": "Date",
                "sorttype": "date",
                "label": "Order Date",
                "width": 100,
                "editable": false,
                "align": "center",
                "fixed": true,
                "formatter": "date",
                "formatoptions": {
                    "srcformat": "Y-m-d H:i:s",
                    "newformat": "d M Y"
                },
                "editoptions": {
                    "dataInit": function (el) {
                        setTimeout(function () {
                            if (jQuery.ui) {
                                if (jQuery.ui.datepicker) {
                                    jQuery(el).datepicker({
                                        "disabled": false,
                                        "dateFormat": "dd M yy"
                                    });
                                    jQuery('.ui-datepicker').css({
                                        'font-size': '75%'
                                    });
                                }
                            }
                        }, 100);
                    }
                },
                "searchoptions": {
                    "dataInit": function (el) {
                        setTimeout(function () {
                            if (jQuery.ui) {
                                if (jQuery.ui.datepicker) {
                                    jQuery(el).datepicker({
                                        "disabled": false,
                                        "dateFormat": "dd M yy"
                                    });
                                    jQuery('.ui-datepicker').css({
                                        'font-size': '75%'
                                    });
                                }
                            }
                        }, 100);
                    }
                }
            }, {
                "name": "maID",
                "index": "maID",
                "sorttype": "int",
                "key": true,
                "editable": true
            }, {
                "name": "System",
                "index": "System",
                "sorttype": "string",
                "editable": true
            }, {
                "name": "Status",
                "index": "Status",
                "sorttype": "string",
                "editable": true
            }, {
                "name": "StartDate",
                "index": "StartDate",
                "sorttype": "date",
                "label": "Start Date",
                "width": 120,
                "align": "center",
                "fixed": true,
                "formatter": "date",
                "formatoptions": {
                    "srcformat": "Y-m-d H:i:s",
                    "newformat": "d M Y"
                },
                "editoptions": {
                    "dataInit": function (el) {
                        setTimeout(function () {
                            if (jQuery.ui) {
                                if (jQuery.ui.datepicker) {
                                    jQuery(el).datepicker({
                                        "disabled": false,
                                        "dateFormat": "dd M yy"
                                    });
                                    jQuery('.ui-datepicker').css({
                                        'font-size': '75%'
                                    });
                                }
                            }
                        }, 100);
                    }
                },
                "searchoptions": {
                    "dataInit": function (el) {
                        setTimeout(function () {
                            if (jQuery.ui) {
                                if (jQuery.ui.datepicker) {
                                    jQuery(el).datepicker({
                                        "disabled": false,
                                        "dateFormat": "dd M yy"
                                    });
                                    jQuery('.ui-datepicker').css({
                                        'font-size': '75%'
                                    });
                                }
                            }
                        }, 100);
                    }
                },
                "editable": true
            }, {
                "name": "EndDate",
                "index": "EndDate",
                "sorttype": "date",
                "label": "End Date",
                "width": 120,
                "align": "center",
                "fixed": true,
                "formatter": "date",
                "formatoptions": {
                    "srcformat": "Y-m-d H:i:s",
                    "newformat": "d M Y"
                },
                "editoptions": {
                    "dataInit": function (el) {
                        setTimeout(function () {
                            if (jQuery.ui) {
                                if (jQuery.ui.datepicker) {
                                    jQuery(el).datepicker({
                                        "disabled": false,
                                        "dateFormat": "dd M yy"
                                    });
                                    jQuery('.ui-datepicker').css({
                                        'font-size': '75%'
                                    });
                                }
                            }
                        }, 100);
                    }
                },
                "searchoptions": {
                    "dataInit": function (el) {
                        setTimeout(function () {
                            if (jQuery.ui) {
                                if (jQuery.ui.datepicker) {
                                    jQuery(el).datepicker({
                                        "disabled": false,
                                        "dateFormat": "dd M yy"
                                    });
                                    jQuery('.ui-datepicker').css({
                                        'font-size': '75%'
                                    });
                                }
                            }
                        }, 100);
                    }
                },
                "editable": true
            }, {
                "name": "Type",
                "index": "Type",
                "sorttype": "string",
                "editable": true
            }],
            "postData": {
                "oper": "grid"
            },
            "prmNames": {
                "page": "page",
                "rows": "rows",
                "sort": "sidx",
                "order": "sord",
                "search": "_search",
                "nd": "nd",
                "id": "maID",
                "filter": "filters",
                "searchField": "searchField",
                "searchOper": "searchOper",
                "searchString": "searchString",
                "oper": "oper",
                "query": "grid",
                "addoper": "add",
                "editoper": "edit",
                "deloper": "del",
                "excel": "excel",
                "subgrid": "subgrid",
                "totalrows": "totalrows",
                "autocomplete": "autocmpl"
            },
            "loadError": function (xhr, status, err) {
                try {
                    jQuery.jgrid.info_dialog(jQuery.jgrid.errors.errcap, '<div class="ui-state-error">' + xhr.responseText + '</div>', jQuery.jgrid.edit.bClose, {
                        buttonalign: 'right'
                    });
                } catch (e) {
                    alert(xhr.responseText);
                }
            },
            "pager": "#pager"
        });
        jQuery('#grid').jqGrid('navGrid', '#pager', {
            "edit": true,
            "add": false,
            "del": false,
            "search": true,
            "refresh": true,
            "view": true,
            "excel": true,
            "pdf": true,
            "csv": false,
            "columns": false
        }, {
            "drag": true,
            "resize": true,
            "closeOnEscape": true,
            "dataheight": 150,
            "errorTextFormat": function (r) {
                return r.responseText;
            }
        }, {
            "drag": true,
            "resize": true,
            "closeOnEscape": true,
            "dataheight": 150,
            "errorTextFormat": function (r) {
                return r.responseText;
            }
        }, {
            "errorTextFormat": function (r) {
                return r.responseText;
            }
        }, {
            "drag": true,
            "closeAfterSearch": true,
            "multipleSearch": true
        }, {
            "drag": true,
            "resize": true,
            "closeOnEscape": true,
            "dataheight": 150
        });
        jQuery('#grid').jqGrid('navButtonAdd', '#pager', {
            id: 'pager_excel',
            caption: '',
            title: 'Export To Excel',
            onClickButton: function (e) {
                try {
                    jQuery("#grid").jqGrid('excelExport', {
                        tag: 'excel',
                        url: 'grouping_ma_details.php'
                    });
                } catch (e) {
                    window.location = 'grouping_ma_details.php?oper=excel';
                }
            },
            buttonicon: 'ui-icon-newwin'
        });
        jQuery('#grid').jqGrid('navButtonAdd', '#pager', {
            id: 'pager_pdf',
            caption: '',
            title: 'Export To Pdf',
            onClickButton: function (e) {
                try {
                    jQuery("#grid").jqGrid('excelExport', {
                        tag: 'pdf',
                        url: 'grouping_ma_details.php'
                    });
                } catch (e) {
                    window.location = 'grouping_ma_details.php?oper=pdf';
                }
            },
            buttonicon: 'ui-icon-print'
        });
        jQuery('#grid').jqGrid('filterToolbar', {
            "stringResult": true,
            "searchOnEnter": false,
            "defaultSearch": "cn"
        });
    });

1 个答案:

答案 0 :(得分:1)

如果使用搜索工具栏(filterToolbar),则只能指定搜索期间使用的一个操作。你用过

$('#grid').jqGrid('filterToolbar',
    { stringResult: true, searchOnEnter: false, defaultSearch: "cn" });

因此,在未指定sopt searchoptions的过滤期间,“包含”(“cn”)操作将应用于所有列。为sopt的所有列添加searchoptions stype: "select"非常重要。

如果您不使用搜索对话框,则可以在sopt: ["eq"]中为searchoptionsstype: "select"的所有列添加formatter: "date"。如果您在搜索工具栏中另外使用搜索对话框,则应该在sopt中使用某个数组,其中"eq"是数组的第一个元素。在过滤网格期间将使用“Equal”操作。

由于您使用高级搜索对话框(使用multipleSearch: true),因此您可以非常轻松地验证搜索工具栏生成的过滤器。您只需设置任何过滤器(或过滤器),然后打开搜索对话框。如果在查看过滤器生成的过滤器之前未打开搜索对话框。我建议您将recreateForm: true选项与multipleSearch: true一起使用(或者可能与multipleGroup: true一起使用)。在这种情况下,您将始终在搜索对话框中看到当前使用的过滤器而不是最后一个搜索对话框(它将隐藏而不是销毁)。