[]
        
(Showing Draft Content)

Wijmo_Odata.Odatacollectionview

ODataCollectionView クラス

CollectionView クラスを拡張して、ODataソースからのデータのロードおよびODataソースへの データの保存をサポートします。

ODataCollectionView クラスを使用して、ODataサービスからデータをロードし、 そのデータを任意のWijmoコントロールのデータソースとして使用できます。 完全なCRUDサポートに加えて、ソート、フィルタ処理、ページング、グループ化などの CollectionView 機能を使用できます。 ソート、フィルタ処理、およびページング機能は、サーバーでもクライアントでも実行できます。 以下のコードは、データソースからいくつかのフィールドを選択し、 クライアントにソート機能を提供するODataCollectionView をインスタンス化する方法を示します。 初期化データを渡すために'options'パラメータが使用されていますが、 これはコントロールの初期化と同じ手法です。

var url = 'http://services.odata.org/Northwind/Northwind.svc';
var categories = new wijmo.odata.ODataCollectionView(url, 'Categories', {
  fields: ['CategoryID', 'CategoryName', 'Description'],
  sortOnServer: false
});

次の例では、ODataCollectionView を使用してNorthWind ODataプロバイダサービスからデータをロードし、 その結果をFlexGrid コントロールに表示する方法を示しています。

Example

階層

コンストラクタ

constructor

  • ODataCollectionView クラスの新しいインスタンスを初期化します。

    引数

    • url: string
    • tableName: string

      サービスから取得するテーブル(エンティティ)の名前。指定されない場合は、有効なテーブル(エンティティ)のリストが取得されます。

    • オプション options: any

      ODataCollectionView の初期化データ(プロパティ値とイベントハンドラ)を含むJavaScriptオブジェクト。

    戻り値 ODataCollectionView

プロパティ

dataTypes

dataTypes: any

データのロード中にデータ型を変換するためのマップとして使用される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型のフィールドも含め、 すべてのフィールドの型情報を提供する必要があります。

expand

expand: string

関連エンティティを返すデータに含めるかどうかを指定する文字列を取得または設定します。

このプロパティは直接ODataの$expandオプションにマップされます。

たとえば、次のコードは、すべての顧客とその注文をデータベースから取得します。 各顧客エンティティには、注文オブジェクトの配列を含む[Orders]フィールドが含まれています。

var url = 'http://services.odata.org/Northwind/Northwind.svc';
var customersOrders = new wijmo.odata.ODataCollectionView(url, 'Customers', {
  expand: 'Orders'
});

fields

fields: string[]

データソースから取得するフィールドの名前を含む配列を取得または設定します。

このプロパティがnullまたは空の配列に設定されている場合は、 すべてのフィールドが 取得されます。

たとえば、以下のコードは、データベースの'Categories'テーブルから3つの フィールドのみを取得する ODataCollectionView を作成します。

import { ODataCollectionView } from '@grapecity/wijmo.odata';
var categories = new ODataCollectionView(url, 'Categories', {
  fields: ['CategoryID', 'CategoryName', 'Description']
});

filterDefinition

filterDefinition: string

サーバーでデータをフィルタ処理するために使用される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;
  },
});

filterOnServer

filterOnServer: boolean

フィルタリングがサーバー側とクライアント側のどちらで実行されるかを決定する値を取得または設定します。

フィルタリングをクライアント側で実行する場合はfilter プロパティを使用し、 サーバー側で実行する場合はfilterDefinition プロパティを使用します。 場合によっては、クライアント側とサーバー側の両方で個別にフィルタを適用したいことがあります。 そのために、(1)filterOnServer プロパティをfalseに設定してfilter プロパティにフィルタ関数を 設定し(これでクライアント側フィルタリングが有効になります)、 (2)filterDefinition プロパティにフィルタ文字列を設定します (これでサーバー側フィルタリングが有効になります)。

このプロパティのデフォルト値は trueです。

inferDataTypes

inferDataTypes: boolean

標準の日付表現のような文字列を含むフィールドを 自動的に日付に変換するかどうかを決定する 値を取得または設定します。

ODataCollectionView クラスは、DateオブジェクトをサポートしていないJSON形式を 使用するため、 このプロパティはデフォルトでtrueに設定されます。

dataTypes プロパティを使用して特定のタイプ情報を指定する場合、このプロパティは無効になります。

isLoading

isLoading: boolean

ODataCollectionView が現在データをロードしていることを示す 値を取得します。

このプロパティを使用して、進捗状況インジケータを提供できます。

jsonReviver

jsonReviver: Function

サーバーから返されるJSON値を解析するときに使用するカスタムのreviver関数を取得または設定します。

提供されている場合、関数は2つのパラメータ(キーおよび値)があり、 解析された値(元の値と同じ値の場合があります)を返さなければなりません。

reviver関数の詳細については、JSON.parse methodを参照してください。

keys

keys: string[]

キーフィールドの名前を含む配列を取得または設定します。

更新操作(追加/削除/完全削除)にはキーフィールドが必要です。

oDataVersion

oDataVersion: number

サーバーによって使用される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回だけなので、オーバーヘッドは大きくありません。

pageCount

pageCount: number

総ページ数を取得します。

pageOnServer

pageOnServer: boolean

ページングをサーバーで実行するか、クライアントで実行するかを決定する 値を取得または設定します。

ページングを有効にするには、 pageSize プロパティを使用します。

このプロパティのデフォルト値は true です。

pageSize

pageSize: number

1ページに表示する項目数を取得または設定します。

requestHeaders

requestHeaders: any

データを送信または要求するときに使用する要求ヘッダーを含むオブジェクトを取得または設定します。

このプロパティは、認証が必要なシナリオでよく使用されます。 次に例を示します。

import { ODataCollectionView } from '@grapecity/wijmo.odata';
var categories = new ODataCollectionView(serviceUrl, 'Categories', {
  fields: ['Category_ID', 'Category_Name'],
  requestHeaders: { Authorization: db.token }
});

showDatesAsGmt

showDatesAsGmt: boolean

日付を現地日ではなくGMTのように調整するかどうかを決定する値を取得または設定します。

sortOnServer

sortOnServer: boolean

ソート操作がサーバー側とクライアント側のどちらで実行されるかを決定する値を取得または設定します。

データのソート方法は sortDescriptions プロパティによって指定します。

このプロパティのデフォルト値は true です。

tableName

tableName: string

このコレクションがバインドされているテーブル(エンティティ)の名前を取得します。

totalItemCount

totalItemCount: number

ページングを適用する前のビュー内の項目の合計数を取得します。

メソッド

commitEdit

  • commitEdit(): void
  • commitNew をオーバーライドして、データベース内の項目を変更します。

    戻り値 void

commitNew

  • commitNew(): void
  • commitNew をオーバーライドして、データベースに新しい項目を追加します。

    戻り値 void

load

  • load(): void
  • ODataソースからデータをロードまたは再ロードします。

    戻り値 void

onError

  • error イベントを発生させます。

    error イベントを発生させます。 デフォルトでは、エラーによって例外が生成され、データのリフレッシュがトリガされます。 この動作を回避するには、イベントハンドラでRequestErrorEventArgs.cancel パラメータをtrueに設定します。

    引数

    戻り値 boolean

onLoaded

  • loaded イベントを発生させます。

    引数

    戻り値 void

onLoading

  • loading イベントを発生させます。

    引数

    戻り値 void

onPageChanging

remove

  • remove(item: any): void
  • commitNew をオーバーライドして、データベースから項目を削除します。

    引数

    • item: any

      データベースから削除する項目。

    戻り値 void

updateFilterDefinition

  • updateFilterDefinition(filterProvider: any): void
  • FlexGridFilter などの既知のフィルタプロバイダに基づいてフィルタ定義を更新します。

    引数

    • filterProvider: any

      既知のフィルタプロバイダ。通常はFlexGridFilter のインスタンス。

    戻り値 void

イベント

error

error: Event

データの読み込みまたは書き込みエラーがあるときに発生します。

loaded

loaded: Event

ODataCollectionView がデータのロードを終了するときに発生します。

loading

loading: Event

ODataCollectionView がデータのロードを開始するときに発生します。