I had to do the same, and Joseph's answer above got me 90% of the way. Thus, most of the loan belongs to him. I had to modify some things to make it work, because choosing the date range of the thread allows you to use single dates (today's option, a specific date parameter, etc.). I also had to add code to start the search after you selected the date. Here's my update ... the meat of what I needed to add was in the beginRequest function:
$(document).ready(function() { var grid = jQuery('#list').jqGrid({ url: '/myajaxurl', datatype: 'json', mtype: 'GET', colNames: ['Reference #', 'CreatedOn', 'Product', 'Model Number', 'Quantity', 'Transaction Type', 'Created By'], colModel: [ { name: 'InventoryTransactionLogId', index: 'InventoryTransactionLogId', align: 'center', sortable: true, search: false }, { name: 'CreatedOn', search: true, stype: 'text', align: 'center', formatter: 'date', formatoptions: { newformat: 'mdy H:i' }, sortable: true, searchoptions: { dataInit: function(el) { $(el).daterangepicker({ dateFormat: 'yy/mm/dd', onChange: datePick }); } } }, { name: 'ProductName', index: 'ProductName', align: 'center', sortable: true, search: false }, { name: 'ModelNo', index: 'ModelNo', align: 'center', sortable: true, search: true }, { name: 'Quantity', index: 'Quantity', align: 'center', sortable: true, search: false }, { name: 'Description', index: 'Description', align: 'center', sortable: true, search: false }, { name: 'UserName', index: 'UserName', align: 'center', sortable: true, search: false } ], loadtext: "Retrieving Inventory Transaction Log...", rowNum: 50, rowList: [25, 50, 100], sortname: 'InventoryTransactionLogId', sortorder: 'asc', pager: '#pager', ignoreCase: true, viewrecords: true, height: 450, autowidth: true, scrollOffset: 45, caption: 'Inventory Transaction Log', emptyrecords: "No records", jsonReader: { root: 'rows', page: 'page', total: 'total', records: 'records', repeatitems: false, cell: 'cell', id: 'InventoryTransactionLogId', userdata: 'userdata' }, beforeRequest: function () { var theGrid = jQuery("#list"); var postData = theGrid.jqGrid('getGridParam', 'postData'); if (postData != undefined && postData.filters != undefined) { postData.filters = jQuery.jgrid.parse(postData.filters); //Remove if current field exists postData.filters.rules = jQuery.grep(postData.filters.rules, function(value) { if (value.field != 'CreatedOn') return value; }); // Parse the range picker field into start/end date var dateRangeString = $('#gs_CreatedOn').val(); if (dateRangeString.length > 0) { var dateRange = dateRangeString.split(' - '); if (dateRange.length == 1) { startDate = dateRange[0] + ' 00:00:00'; endDate = dateRange[0] + ' 23:59:59.999'; } else { startDate = dateRange[0] + ' 00:00:00'; endDate = dateRange[1] + ' 23:59:59.999'; } var startDateFilter = { "field": "CreatedOn", "op": "ge", "data": startDate }; var endDateFilter = { "field": "CreatedOn", "op": "le", "data": endDate }; // Add new filters postData.filters.rules.push(startDateFilter); postData.filters.rules.push(endDateFilter); } } else { jQuery.extend(postData, { }); } if (postData != undefined && postData.filters != undefined) { postData.filters = JSON.stringify(postData.filters); postData._search = true; } return [true, '']; } }); $('.date').datepicker(); grid.jqGrid('filterToolbar', { stringResult: true, searchOnEnter: true, defaultSearch: "bw" }); grid.jqGrid('navGrid', '#pager', { del: false, add: false, edit: false, search: false }); }); datePick = function() { var grid = $("#list"); $("#list")[0].triggerToolbar(); $("#list").trigger("reloadGrid", [{ page: 1 }]); }