1

Devexpress の DXTREME フレームワークを使用して、HTML モバイル アプリを OData ソースに接続しています。

OData サービスを介して公開された SQL Server のテーブルの 1 つは、日付 (datetime ではない) フィールドを持つテーブルです。次のように OData を介して公開されます。

<d:TaskDate m:type="Edm.DateTime">2010-04-01T00:00:00</d:TaskDate>

カレンダー コントロールを使用してこのフィールドのデータをフィルタリングしようとしていますが、JS 側でデータソースをフィルタリングしようとすると、一致するものがありません。これは、日付が UTC 形式で OData サービスに渡されるためです。そのため、TaskDate = '10/JUL/2013' をクエリすると、日付は "09/JUL/2013 14:00" として渡されると思います。 "。TaskDate > '10/JUL/2013' でフィルタリングすると、「09/JUL/2013 14:00」以降の結果がとにかく返されます。

時間部分のない新しい日付を宣言しようとしました:

filterDate = new Date(2013, 6, 10)

しかし、それでも機能しません。JS 側の以前のタイム ゾーンを 10 減算します。

私がやりたいことは、その特定の日付に有効なタスクのリストを返すことです。どうすればこれを達成できますか?

4

1 に答える 1

1

私の問題は、日付だけを返す dxDateBox コントロールに関する混乱であり、その日付が odata サービスに渡されたときに変更されたと思います。

私は自分で日付をUTCに変換することで問題を解決しましたが、コントロールの日付部分を使用するだけです(filterDateはコントロールからのものです):

var paramDate = new Date(Date.UTC(this.filterDate().getFullYear(), this.filterDate().getMonth(), this.filterDate().getDate()));
this.dataSource.filter(["TaskDate", "=", paramDate]);

これはうまく機能しますが、かなり冗長に見えます。

于 2013-06-12T04:46:06.140 に答える