[]
ODataVirtualCollectionView クラスの新しいインスタンスを初期化します。
ODataサービスのURL(例: 'http://services.odata.org/Northwind/Northwind.svc')。
サービスから取得するテーブル(エンティティ)の名前。指定されない場合は、有効なテーブル(エンティティ)のリストが取得されます。
{@link ODataVirtualCollectionViewの初期化データ}(プロパティ値とイベントハンドラ)を含むJavaScriptオブジェクト。
ODataVirtualCollectionView では、canGroup をfalseに設定する必要があります。
データのロード中にデータ型を変換するためのマップとして使用されるJavaScriptオブジェクトを取得または設定します。
オブジェクトのキーはフィールド名を表し、値はそのデータをどのように型変換するかを示すDataType 値を表します。以下のサンプルコードは、 ODataCollectionView を作成した後、(データベースに文字列として格納されている)'Freight'の値を数値に変換し、さらに3つの日付フィールドを日付に変換します。
import { ODataCollectionView } from '@grapecity/wijmo.odata';
var orders = new ODataCollectionView(url, 'Orders', {
dataTypes: {
Freight: wijmo.DataType.Number
OrderDate: wijmo.DataType.Date,
RequiredDate: wijmo.DataType.Date,
ShippedDate: wijmo.DataType.Date,
}
});
このプロパティは、データベースに格納されているデータの書式が一般的な用法に適合していない場合に役立ちます。 inferDataTypes プロパティによってDate値の変換が自動的に処理されるため、ほとんどの場合、データ型に関する情報を提供する必要はありません。 明示的に型情報を提供した場合、inferDataTypes プロパティは適用されません。 そのため、データ型の情報を提供する場合は、Date型のフィールドも含め、 すべてのフィールドの型情報を提供する必要があります。
関連エンティティを返すデータに含めるかどうかを指定する文字列を取得または設定します。
このプロパティは直接ODataの$expandオプションにマップされます。
たとえば、次のコードは、すべての顧客とその注文をデータベースから取得します。 各顧客エンティティには、注文オブジェクトの配列を含む[Orders]フィールドが含まれています。
var url = 'http://services.odata.org/Northwind/Northwind.svc'; var customersOrders = new wijmo.odata.ODataCollectionView(url, 'Customers', { expand: 'Orders' });
データソースから取得するフィールドの名前を含む配列を取得または設定します。
このプロパティがnullまたは空の配列に設定されている場合は、 すべてのフィールドが 取得されます。
たとえば、以下のコードは、データベースの'Categories'テーブルから3つの フィールドのみを取得する ODataCollectionView を作成します。
import { ODataCollectionView } from '@grapecity/wijmo.odata';
var categories = new ODataCollectionView(url, 'Categories', {
fields: ['CategoryID', 'CategoryName', 'Description']
});
サーバーでデータをフィルタ処理するために使用されるODataフィルタ仕様 を含む文字列を取得または設定します。
フィルタ定義構文については、ODataドキュメントを参照してください。たとえば、以下のコードでは、 'CompanyName'フィールドが'A'で始まり'S'で終わるレコードがサーバーから返されます。
view.filterDefinition = "startswith(CompanyName, 'A') and endswith(CompanyName, 'B')";
フィルタ定義は自動生成することができます。 たとえば、FlexGridFilter コンポーネントは、データソースがODataCollectionView かどうかを検出し、 {@link ODataCollectionView.filter} プロパティとODataCollectionView.filterDefinition プロパティの両方を自動的に更新します。 ODataCollectionView.filterDefinition プロパティは、ODataCollectionView.filterOnServer プロパティがfalseに設定されている場合でも 適用されることに注意してください。 これにより、同じコレクションに対してサーバーフィルタとクライアントフィルタの両方を適用でき、 さまざまなシナリオで役立ちます。 たとえば、次のコードは、ODataCollectionView.filterDefinition プロパティを使用してサーバーでフィルタ処理を実行し、 {@link ODataCollectionView.filter} プロパティを使用してクライアントでさらにフィルタ処理を実行します。 結果のコレクションには、名前が'C'で始まり、単価が20より大きい項目が表示されます。
var url = 'http://services.odata.org/V4/Northwind/Northwind.svc/'; var data = new wijmo.odata.ODataCollectionView(url, 'Products', { oDataVersion: 4, filterDefinition: 'startswith(ProductName, \'C\')', // サーバー側のフィルタ filterOnServer: false, // クライアント側のフィルタ filter: function(product) { return product.UnitPrice > 20; }, });
ODataVirtualCollectionView では、filterOnServer をtrueに設定する必要があります。
標準の日付表現のような文字列を含むフィールドを 自動的に日付に変換するかどうかを決定する 値を取得または設定します。
ODataCollectionView クラスは、DateオブジェクトをサポートしていないJSON形式を 使用するため、 このプロパティはデフォルトでtrueに設定されます。
dataTypes プロパティを使用して特定のタイプ情報を指定する場合、このプロパティは無効になります。
ODataCollectionView が現在データをロードしていることを示す 値を取得します。
このプロパティを使用して、進捗状況インジケータを提供できます。
サーバーから返されるJSON値を解析するときに使用するカスタムのreviver関数を取得または設定します。
提供されている場合、関数は2つのパラメータ(キーおよび値)があり、 解析された値(元の値と同じ値の場合があります)を返さなければなりません。
reviver関数の詳細については、JSON.parse methodを参照してください。
キーフィールドの名前を含む配列を取得または設定します。
更新操作(追加/削除/完全削除)にはキーフィールドが必要です。
サーバーによって使用されるODataのバージョンを取得または設定します。
現在、ODataサービスには1.0~4.0の4つのバージョンがあります。 最新サービスではバージョン4.0が使用されていますが、 レガシーサービスも依然として数多く運用されています。
利用するサービスが実装しているODataのバージョンがわかっている場合は、 ODataCollectionView を作成するときに、 oDataVersion プロパティを適切な値(1~4)に設定します(以下の例を参照)。
var url = 'http://services.odata.org/Northwind/Northwind.svc'; var categories = new wijmo.odata.ODataCollectionView(url, 'Categories', { oDataVersion: 1.0, // レガシーODataソース fields: ['CategoryID', 'CategoryName', 'Description'], sortOnServer: false });
利用するサービスが実装しているODataのバージョンがわからない場合 (おそらく、 ODataエクスプローラアプリケーションを記述している場合)には、 バージョンは指定しないでください。 その場合、 ODataCollectionView この情報をサーバーから取得します。この操作には追加のリクエストが必要ですが、 サービスURLあたり1回だけなので、オーバーヘッドは大きくありません。
総ページ数を取得します。
ODataVirtualCollectionView では、pageOnServer をtrueに設定する必要があります。
1ページに表示する項目数を取得または設定します。
データを送信または要求するときに使用する要求ヘッダーを含むオブジェクトを取得または設定します。
このプロパティは、認証が必要なシナリオでよく使用されます。 次に例を示します。
import { ODataCollectionView } from '@grapecity/wijmo.odata';
var categories = new ODataCollectionView(serviceUrl, 'Categories', {
fields: ['Category_ID', 'Category_Name'],
requestHeaders: { Authorization: db.token }
});
日付を現地日ではなくGMTのように調整するかどうかを決定する値を取得または設定します。
ODataVirtualCollectionView では、sortOnServer をtrueに設定する必要があります。
このコレクションがバインドされているテーブル(エンティティ)の名前を取得します。
ページングを適用する前のビュー内の項目の合計数を取得します。
commitNew をオーバーライドして、データベース内の項目を変更します。
commitNew をオーバーライドして、データベースに新しい項目を追加します。
ODataソースからデータをロードまたは再ロードします。
error イベントを発生させます。
error イベントを発生させます。 デフォルトでは、エラーによって例外が生成され、データのリフレッシュがトリガされます。 この動作を回避するには、イベントハンドラでRequestErrorEventArgs.cancel パラメータをtrueに設定します。
エラーに関する情報を含むRequestErrorEventArgs 。
pageChanging イベントを発生させます。
イベントデータを含むPageChangingEventArgs 。
commitNew をオーバーライドして、データベースから項目を削除します。
データベースから削除する項目。
特定のレコードの範囲をビューにロードするため、データウィンドウを設定します。
データウィンドウの最初の項目のインデックス。
データウィンドウの最後の項目のインデックス。
FlexGridFilter などの既知のフィルタプロバイダに基づいてフィルタ定義を更新します。
既知のフィルタプロバイダ。通常はFlexGridFilter のインスタンス。
データの読み込みまたは書き込みエラーがあるときに発生します。
ODataCollectionView がデータのロードを終了するときに発生します。
ODataCollectionView がデータのロードを開始するときに発生します。
ODataCollectionView クラスを拡張して、setWindow メソッドを使用したデータのオンデマンドロードをサポートします。
以下のサンプルコードは、 ODataCollectionView wijmo.grid.FlexGrid コントロールと同期させてグリッドの ビューポートにデータをロードする方法を示します。
ODataVirtualCollectionView クラスは「データウィンドウ」を実装しており、 実際に表示されるデータのみがサーバーからロードされます。 表示されていない項目はコレクションにnull値として追加され、 setWindow メソッドの呼び出しによってロードされないかぎりnull値の ままになります。
このオンデマンドでデータをロードするメソッドは、必要になるまでデータがロードされないため、 大きなデータセットを扱うときに便利です。ただし、制限もいくつかあります。 ソートとフィルタリングはサーバー側で実行する必要があります。グループ化とページングはサポートされていません。
次の例では、 ODataVirtualCollectionView を使用してNorthWind ODataプロバイダサービスからデータをロードしています。 ユーザーがグリッドをスクロールするに伴ってコレクションはデータを要求時にロードします。
Example