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 形式で返されます。日付で検索しようとすると、奇妙な結果が得られます。基になるデータはまだフォーマットされておらず、それを検索していると思います。次に例を示します。

私のデータベースでは、1 つのオブジェクトの 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