4D View Pro: データコンテキストを使ったデータ表示

4D View Pro では、データをロードし、テンプレートを作成するための新しい方法、データコンテキスト が利用できるようになりました。データコンテキストを設定すると、ドキュメントにプレースホルダーを設置し、そこにデータを差し込めるようになります。

VP SET CUSTOM FUNCTION であらかじめ許可しなくても、ほんの数行のコードで、オブジェクトやコレクションを表示することができます!

では、その詳細を見ていきましょう。

HDI: 4D View Pro: データコンテキストの利用

ドキュメントにプレースホルダーを設置する

まず、4D View Pro ドキュメントを作成し、オブジェクト属性に紐づけます。たとえば、Firstname と Lastname という 2つの属性を持つオブジェクトを使用したい場合、VP SET BINDING PATH コマンドで対象セルを指定し、プレースホルダーを 2つ作成できます:

VP SET BINDING PATH(VP Cell("ViewProArea"; 0; 0); "Firstname")
VP SET BINDING PATH(VP Cell("ViewProArea"; 0; 1); "Lastname")

データコンテキストがまだ定義されていないため、シートには値が表示されません。セルが正しくバインドされていることを確認するには、リボンインターフェースの “データ” タブで “シートバインディング” ボタンをクリックします。属性の名前が大括弧の間に表示されます:

 

データコンテキスト

テンプレートの準備ができましたので、次は VP SET DATA CONTEXT を使い、オブジェクトを渡してデータコンテキストを設定します:

$object:=New object
$object.Firstname:="John"
$object.Lastname:="Smith"
VP SET DATA CONTEXT("ViewProArea"; $object)

このように、テンプレートは自動的に更新されます:

blank

もちろん、ユーザーがデータを修正することも可能です:

blank

編集されたオブジェクトを取得するには、VP Get data context を使ってデータコンテキストのオブジェクトを取得することができます:

$object:=VP Get data context("ViewProArea")

//$object={Firstname:Judith,Lastname:Smith}

シートSへのデータ差し込み

データコンテキストにコレクションを渡すと、このコレクションは自動的にシートにバインドされます。VP SET DATA CONTEXT コマンドの autoGenerateColumns オプションが true に設定されている場合、コレクションは自動的にシートに表示されます。

たとえば、データベーステーブルのレコードをすべて表示するには、次のように書くことができます:

$people:=ds.People.all().toCollection()

VP SET DATA CONTEXT("ViewProArea"; $people; New object("autoGenerateColumns"; True)

結果:

blank

列と行の数は自動的に計算され、列の名前はテーブルのフィールド名となります。

autoGenerateColumnstrue に設定されていない場合、データは自動表示されません。

上記の HDI で、これらのコマンドの動作を確認してみてください。また、詳細についてはドキュメントを参照ください。

Fabrice Mainguené
- Product Owner -Fabrice Mainguenéは、2016年11月に4D Programチームに参加しました。プロダクトオーナーとして、彼はユーザーストーリーを書き、それを機能仕様に変換する役割を担っています。CNAMでコンピュータサイエンスの学士号を取得した後、FabriceはWindev開発者として小さなソフトウェア出版社に入社しました。その後、彼は産業および貿易分野のさまざまな企業で、Windev および Web 開発者として、また新機能の技術アドバイザーとして働きました。