2

ビューの 1 つに KOGrid を含む ASP.Net MVC サイトがあります。これは、EF を介して SQL Server から選択するコントローラーに Ajax 呼び出しを行うことによってデータをプルします。私のデータテーブルは以下に見ることができます:

ここに画像の説明を入力

KO Grid の列定義は次のとおりです。

self.columnDefs = [
        { width: 50, field: 'workflowTask_WorkflowTaskId', displayName: 'Id' },
        { width: 150, field: 'Timestamp', displayName: 'Timestamp', cellFilter: function (data) { return moment(data).format('DD/MM/YYYY h:mm a') } },
        { width: 100, field: 'currentState', displayName: 'Crnt State' },
        { width: 500, field: 'note', displayName: 'Notes' },
        { width: 100, field: 'previousState', displayName: 'Prev State' },
        { width: 100, field: 'currentUser', displayName: 'Crnt User', sortable: false },
        { width: 100, field: 'amendedByUser', displayName: 'Amnd By', sortable: false },
        { width: 100, field: 'previousUser', displayName: 'Prev User', sortable: false }
    ];

次のグリッド オプションがあります。

self.gridOptions = {
        data: self.recs,
        columnDefs: self.columnDefs,
        autogenerateColumns: false,
        showGroupPanel: true,
        canSelectRows: false,
        showFilter: true,
        filterOptions: self.filterOptions,
        enablePaging: true,
        pagingOptions: self.pagingOptions,
        sortInfo: self.sortInfo,
        rowHeight: 35
    };

kogrid に表示されるデータを保持する監視可能な配列があります。

self.recs = ko.observableArray([]);

これは、次の JavaScript 関数によって入力されます。

self.get = function () {
        $loadingIndicator.show();

        $.ajax({
            url: BASE_URL + 'TaskHistory/GetRecords',
            type: 'get',
            data: {
                'page': self.pagingOptions.currentPage(),
                'pageSize': self.pagingOptions.pageSize(),
                'filter': self.filterOptions.filterText == undefined ? '' : self.filterOptions.filterText(),
                'sort': self.sortInfo().column.field + ' ' + self.sortInfo().direction
            },
            contentType: 'application/json; charset=utf-8',
            success: function (data) {
                self.pagingOptions.totalServerItems(data.RecCount);

                var recsArray = [];
                $.each(data.PageOfRecords, function (key, value) {
                    recsArray.push(
                    new Task(value.WorkflowTaskHistoryId,
                                value.Timestamp,
                                value.PreviousState,
                                value.CurrentState,
                                value.AmendedByUser,
                                value.Note,
                                value.PreviousUser,
                                value.CurrentUser,
                                value.WorkflowTask_WorkflowTaskId));
                });
                self.recs(recsArray);
            }
        });
        $loadingIndicator.hide();
    };

次の Chrome デベロッパー ツールのスクリーン グラブでわかるように、このオブザーバブルは正しく設定されています。

ここに画像の説明を入力

私の問題は、以下に示すように、表示される日付はすべて現在のマシンの日時であり、ajax 呼び出しから取得されたデータとは関係ありません。

ここに画像の説明を入力

誰が私がどこで間違ったのか見てもらえますか?

4

1 に答える 1