0

我在我的 jqGrid 中获取一行日期以正确过滤时遇到了一些问题。这是我的 .cshtml 的一部分:

<script type="text/javascript">
        $(function () {
            var width = $(window).width() - 50;
            $("#orders_grid").jqGrid({
                datatype: "local",
                width: width,
                height: "auto",
                search: true,
                autowidth: false,
                shrinkToFit: true,
                colNames: ['ID', 'Status', 'Category','Sub Category', 'Title', 'Owner', 'Team', 'Priority', 'Release', 'Business Line', 'Created', 'Update'],
                colModel: [
                    { name: 'ID',                                   width: 12,          align: 'center',    sorttype: 'int'},
                    { name: 'GridStatus',                           width: 15,          align: 'center'},
                    { name: 'GridCategory',                         width: 15,          align: 'center'},                                
                    { name: 'GridSubCategory',                      width: 15,          align: 'center'},
                    { name: 'Title',                                width: 60,          align: 'left'  },                                
                    { name: 'GridOwnerUser',                        width: 20,          align: 'center'},
                    { name: 'GridTeam',                             width: 30,          align: 'center'},                        
                    { name: 'GridPriority',                         width: 12,          align: 'center'},
                    { name: 'GridRelease',                          width: 12,          align: 'center'},                       
                    { name: 'GridBusinessLine',                     width: 12,          align: 'center'},
                    { name: 'CreatedDateTime',                      width: 14,          align: 'center',    sortable: true, sorttype: 'd',       formatter: dateFix },
                    { name: 'LastUpdateDateTime',                   width: 14,          align: 'center',    sortable: true, sorttype: 'd',        formatter: dateFix }
                ],
                rowNum: 20,
                rowList: [20,50,100,1000,100000],
                viewrecords: true,
                pager: '#gridpager',
                sortname: "ID",
                sortable: true,
                ignoreCase: true,
                headertitles: true,
                sortorder: "desc",
                onSelectRow: function (rowId)
                {
                    var id = $("#orders_grid").getCell(rowId, 'ID');
                    document.location.href = '/TicketCenter/Display/'+ id;
                }                
                }).navGrid("#orders_grid_pager", { edit: false, add: false, del: false }, {}, {}, {}, { multipleSearch: true, multipleGroup: false, showQuery: false, recreateFilter: true });
                    $("#orders_grid").jqGrid('filterToolbar', { stringResult: true, searchOnEnter: true, defaultSearch: 'cn' });
                    setTimeout(function () { searchOrders('@Model.filterFor'); }, 200);
        });

        function dateFix(LastUpdateDateTime)
        {
            var x = LastUpdateDateTime.substring(6, LastUpdateDateTime.length - 2);
            x = parseInt(x);
            x = new Date(x);
            x.setMinutes(x.getMinutes() - x.getTimezoneOffset());
            x = x.format("mm/dd/yyyy h:MM TT");
            return x;
        }

        function searchOrders(filter)
        {
            var data = { filter: filter } 
            var request = $.ajax({
                url: "@Url.Action("ListTickets", "TicketCenter")",
                type: "GET",
                cache: false,
                async: true,
                data: data,
                dataType: "json",
            });           
            request.done(function (orders) {             
                var thegrid = $("#orders_grid");
                thegrid.clearGridData();
                setTimeout(function()
                {
                    for (var i = 0; i < orders.length; i++)
                    {
                        thegrid.addRowData(i+1, orders[i]);
                    }
                    thegrid.trigger("reloadGrid");
                }, 500);
            });
            request.fail(function(orders) {
            });
        }
</script>

我需要能够在 CreatedDateTime 和 LastUpdateDateTime 列中进行搜索。当我从数据库中获取数据时,它最初是一个日期时间。当网格加载时,日期显示为“/Date102342523523463246236236”,显然是刻度。我使用 dateFix 格式化程序对其进行了格式化,它以 mm/dd/yyyy h:MM TT 格式返回日期。现在,当我尝试按日期搜索时,我得到了奇怪的结果。我在想底层数据仍然是未格式化的,它正在搜索它。这是一个例子:

在我的数据库中,一个对象的 CreatedDateTime 是2013-10-11 20:20:10.963

当 jqGrid 加载数据时,它显示/Date(1381537210963)

在我将 formatter : dateFix 添加到 colModel 后,它显示10/11/2013 4:20 PM

如果我在搜索框中输入10,它会返回该对象。

如果我输入10/,它不会返回任何内容。

如果我输入2013,它不会返回任何内容。

有没有办法解决这个问题?

4

1 回答 1

0

决定在将日期发送到网格之前将其转换为控制器中的字符串。解决。

于 2013-10-18T15:05:13.630 回答